修改mysql 表引擎类型错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了修改mysql 表引擎类型错误相关的知识,希望对你有一定的参考价值。

mysql引擎默认类型为MyISAM,

mysql>show engines;

事务隔离机制为:READ-COMMITTED(/etc/my.cnf查看)

默认建表如果不指定引擎类型,自动为MyISAM。此时想更改表为InnoDB类型。用户登陆到mysql客户端执行:
mysql>alter table ATT engine = InnoDB;

则报错:
ERROR 1598 (HY000): Binary logging not possible. Message: Transaction level ‘READ-COMMITTED‘ in InnoDB is not safe for binlog mode ‘STATEMENT‘。

解决办法:
运行该命令即可:SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;

上面方法治标不治本!
这种方式强行修改了表的引擎类型,会导致表插入数据失败,依然提示错误:
Binary logging not possible. Message: Transaction level ‘READ-COMMITTED‘ in InnoDB is not safe for binlog mode ‘STATEMENT‘.
解决办法:/etc/my.cnf添加参数:
binlog_format = ROW
innodb_locks_unsafe_for_binlog = 1


以上是关于修改mysql 表引擎类型错误的主要内容,如果未能解决你的问题,请参考以下文章

MySQL表类型的选择

mysql修改数据库的存储引擎(InnoDB)

Mysql基础知识:创建查看修改和删除表

2020-09-01 MySQL 修改表和表字段的类型

mysql 数据库 列表中的字段前如何批量添加指定字符?

数据库 MySQL 之 表操作存储引擎