修改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

时间: 2024-12-10 02:45:46

修改mysql 表引擎类型错误的相关文章

如何修改MySQL数据库引擎

对于MySQL数据库,如果你要使用事务以及行级锁就必须使用INNODB引擎.如果你要使用全文索引,那必须使用MyISAM. INNODB的实用性,安全性,稳定性更高但是效率比MyISAM稍差,但是有的功能是MyISAM没有的.修改MySQL的引擎为INNODB,可以使用外键,事务等功能,性能高.本文主要介绍如何修改MySQL数据库引擎为INNODB,接下来我们开始介绍. 首先修改my.ini,在[mysqld]下加上: default-storage-engine=INNODB 其中的蓝色字体是

如何批量修改mysql表的引擎

工作需要,要将所有的mysql表的引擎改为innodb 执行如下SQL SET @DATABASE_NAME = 'name_of_your_db';SELECT  CONCAT('ALTER TABLE `', table_name, '` ENGINE=InnoDB;') AS sql_statementsFROM    information_schema.tables AS tbWHERE   table_schema = @DATABASE_NAMEAND     `ENGINE` =

修改mysql表的存储引擎

方法一. alter table mytable engine = InnoDB;//将mytable表引擎改为InnoDB. 方法二. 使用mysqldump 将表导出,然后修改 表create table 部分 engine 方法三. create table innodb_table like my_table;//创建一张新表 alter table innodb_table engine = InnoDB;//修改新表的存储引擎 insert into innodb_table  se

修改mysql数据引擎的方法- 提高数据库性能

前言:同学告我说,他为了能使得数据查询变得快一点,修改的数据引擎,故查询一下,总结一下. 登录mysql后,查看当前数据库支持的引擎和默认的数据库引擎,使用下面命令: mysql>show engines; +--------------------+---------+-------------------------------------------------------------------------------------------------------+----------

Mysql表引擎的切换

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: center; font: 12.0px "PingFang SC" } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "PingFang SC" } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "PingFang SC";

批量修改mysql表、表、数据库的字符校对规则

记录一个在工作中遇到的问题,也不算是问题,为的是找一种简便的方法批量修改数据表字段的排序规则,在MySQL中叫collation,常常和编码CHARACTER一起出现的.collation有三种级别,分辨是数据库级别,数据表级别和字段级别. 1.The database level 2.The table level 3.The column level https://confluence.atlassian.com/display/CONFKB/How+to+Fix+the+Collatio

mysql批量修改数据库表引擎

数据库表之前的引擎是MyISAM,影响事务操作,要改成Innodb引擎 查询表引擎 SELECT CONCAT(table_name,' ', engine) FROM information_schema.tables WHERE table_schema="表名" AND ENGINE="MyISAM"; 生成修改sql select CONCAT('alter table ',table_name,' engine=InnoDB;') FROM informa

修改mysql存储引擎备份数据库报错及解决方案

备份数据库报错 原因:由于监控服务器最近cpu负载比较高.(cpu4核心,负载2.7左右)感觉很奇怪,因为别的服务器mysql占用的资源并不多,因此我首先优化了数据库的配置文件.cpu稍微下降了一点,但是没有特别明显的变化. 于是,从mysql的存储引擎和日志考虑,结果发现默认用的引擎是myisam.好吧.换成innodb,(由于事先我没备份,就在配置文件修改了引擎,因为日志除了二进制其他并没有开启.所以没动它.重启数据库. ok 早就听说这两个引擎,区别,看来性能差别真大啊! 好吧.备份数据库

修改mysql 表的字符编码

在select进行中文查询的时候报了如下的错误 ERROR 1267 (HY000): Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=' 查看一下表的编码 show create table t_user_friend; 发现其是latin1编码的,需将其转成utf8 命令如下 alter table t_user_friend conv