如何修改数据库默认引擎
数据库引擎一直改不了,请问谁知道正确的修改步骤呢? 我的步骤是 1、在my.ini文件中的【mysqld】下面增加 default-storage-engine=INNODB, 2、重启数据库服务 3.show engines默认的还是MYISAM。。。。
数据库引擎一直改不了,请问谁知道正确的修改步骤呢? 我的步骤是 1、在my.ini文件中的【mysqld】下面增加 default-storage-engine=INNODB, 2、重启数据库服务 3.show engines默认的还是MYISAM。。。。
2017-02-16
一、外键约束的条件
(1)、父表和子表必须使用相同的存储引擎,如InnoDB等,而且禁止使用临时表;
(2)、支持外键约束的数据表存储引擎只能是InnoDB;
(3)、外键列(字段)和参照列必须具有相似的数据类型,其中数字的长度或是否有符号位必须相同,
而字符类型的字段的长度则可以不同;
(4)、外键列(字段)和参照列(即外键列在另一个表中对应的主键列)必须创建索引,如果外键不存
在索引(即外键约束)的话,MySQL将自动给外键列自动创建索引(外键约束)
二、创建步骤:
1、修改存储引擎
第一种方法:在my.ini的[mysqld]下面加入default-storage-engine=innodb;然后重启mysql服务。
通过show engines 命令或者是show create table table_name命令查看当前存储引擎。
如果无法修改,请使用第二种方法。
第二种方法:
在创建表的过程中指定存储引擎
create table table_name(
id smallint unsigned auto_increment primary key,
name varvhar(20);
)engine=innode;
或者创建后修改存储引擎。
create table table_name(
id smallint unsigned auto_increment primary key,
name varvhar(20);
)
alter table table_name engine=innode;
2.创建省份表,该表为参照表
create table provinces(
id smallint unsigned auto_increment primary key,
name varvhar(20);
)engine=innode;
3、创建用户表
create table user(
id smallint unsigned auto_increment primary key,
name varvhar(20);
pid smallint unsigned//该列的类型应该和provinces省份表相同,注意,若类型不一致会导
致错误,报错150;
foreign key (pid) references provinces (id)
)engine=innode;
4、省份插入数据
insert provinces(name) values('广东');
show columns from provinces;//查看省份表的表结构
select * from provinces;//查看表的数据
5、插入用户表
insert user(name,pid)values('zhangsan',2);//注意插入pid=2时报错,原因是
省份表中的id目前只有1,参照表中没有的值,约束表是无法插入的。
insert user(name,pid)values('zhangsan',2);//该插入正确。
举报