日志报错
ERROR 1786 (HY000): Statement violates GTID consistency: CREATE TABLE … SELECT.
- 错误描述:MySQL开启GTID后不支持此类语法,原因是弱事务,ddl和dml放一起了,无法保证事务的原子性。
- 解决办法:(1)将gtid关闭。(2)create table select语句拆成create table t like t1;insert into t select * from t1;
ERROR 1197 (HY000): Multi-statement transaction required more than ‘max_binlog_cache_size’ bytes of storage; increase this mysqld variable and try again
- 问题描述:max_binlog_cache_size配置值太小,导致更新失败。
- 解决办法:加大max_binlog_cache_size的配置,或者将隔离级别改成rr且将binlog format改成mixed。如果是rc模式,mixed的话也会记录成row,原因是和gap lock有关,如果innodb_locks_unsafe_for_binlog参数设置为1就不会了(关闭gap lock,但是是read only属性,即要重启mysqld)
ERROR 1118 (42000): Row size too large (> 4030). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.
- 问题描述:创建表异常,原因是char/varchar字段的总长度超过4030。
- 解决办法:关闭严谨的检查机制。set global innodb_strict_mode=0;但是不建议这么做,最好还是遵循提示建议,将char或者varchar改成text或者blog,或者将大字段拆解成独立表从MySQL5.5.X版本开始,你可以开启InnoDB严格检查模式,尤其采用了页数据压缩功能后,最好是开启该功能。开启此功能后,当创建表(CREATE TABLE)、更改表(ALTER TABLE)和创建索引(CREATE INDEX)语句时,如果写法有错误,不会有警告信息,而是直接抛出错误,这样就可直接将问题扼杀在摇篮里。