为了账号安全,请及时绑定邮箱和手机立即绑定

如何修改数据库默认引擎

数据库引擎一直改不了,请问谁知道正确的修改步骤呢? 我的步骤是 1、在my.ini文件中的【mysqld】下面增加 default-storage-engine=INNODB, 2、重启数据库服务 3.show engines默认的还是MYISAM。。。。

正在回答

2 回答

一、外键约束的条件

(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);//该插入正确。


0 回复 有任何疑惑可以回复我~

改了要保存的,你应该没保存。

0 回复 有任何疑惑可以回复我~
#1

慕雪5265399 提问者

保存了,可能是我的版本有问题,这里就不晒my.ini的配置了,我后来是通过alter table (table_name) engine=innodb,进行修改此表的存储引擎
2017-02-16 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
与MySQL的零距离接触
  • 参与学习       396886    人
  • 解答问题       3353    个

本课程涵盖全部MySQL数据库的基础,学习MySQL数据库的基础知识

进入课程

如何修改数据库默认引擎

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信