Error number: MY-012077; Symbol: ER_IB_MSG_252; SQLSTATE: HY000
Message: %s
错误说明
MySQL错误 ER_IB_MSG_252 指示尝试发布不符合InnoDB格式要求的数据内容字符串。InnoDB要求写入的内容必须是UTF-8编码的。 当内容不符合要求时,MySQL会报出错误 ER_IB_MSG_252,表示无法插入数据。
常见案例
错误 ER_IB_MSG_252 会在尝试将不符合InnoDB格式要求的数据内容插入MySQL数据库时出现。通常,使用UTF-8编码的字符串能正常插入到MySQL数据库,但是当写入的字符集不符合要求时就会出现错误 ER_IB_MSG_252。
解决方法
要解决这个错误,必须确保所有要写入MySQL数据库的字符串均为UTF-8格式才行。如果原始字符串使用了其它格式,可以使用iconv函数来将其转换为UTF-8编码。
MySQL还提供了一个属性innodb_large_prefix,它可以用来使字符串支持UTF8MB4,以便能够写入非基本Unicode数据集。要启用innodb_large_prefix,需要在my.cnf文件中设置innodb_large_prefix为 True。
如果 MySQl服务器版本低于5.5.3,则还应将 innodb_file_format 设置为Barracuda,它能够处理大的前缀及Unicode字符集。如下:
[mysql]
innodb_file_format = Barracuda
innodb_large_prefix = TRUE