ERROR 42000: Row size too large (> ####). Changing some columns to TEXT
or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help.
In current row format, BLOB prefix of 768 bytes is stored inline
解决
输出更合适、更直观的错误信息,如下:
ERROR 42000: The size of BLOB/TEXT data inserted in one transaction is
greater than 10% of redo log size. Increase the redo log size using
innodb_log_file_size.
补丁
问题五
FLUSH TABLE 操作在某些情况下可能导致实例 crash。 例如如下执行序列:
mysql> CREATE TABLE t1(C TEXT CHARACTER SET UJIS) ENGINE=INNODB;
Query OK, 0 rows affected (0.00 sec)
mysql> LOCK TABLES t1 WRITE,t1 AS t0 READ,t1 AS t2 READ;
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH TABLE t1; ---- 实例 CRASH
当执行 FLUSH TABLE 时,在重载表 cache 时,InnoDB 层会针对每个表设置其状态
(ha_innobase::store_lock)。如果执行 FLUSH 操作,并且加的是读锁时,就会调用函数
row_quiesce_set_state 将 table->quiesce 设置为 QUIESCE_START。在上例中,表 t1 的
两个表名表均加读锁,造成重复设置状态为 QUIESCE_START,导致断言失败。
Tips:在 5.6 版本中,虽然有明确的 FLUSH TABLE..FOR EXPORT 命令来协助转储 ibd 文件。
但实际上,简单的 FLUSH TABLE 操作默认就会产生一个 tbname.cfg 的配置文件,拷贝该文件和
ibd,可以将数据转移到其他实例上。table->quiesce 用于标识操作状态,例如,如果标识为
评论0