配置MySQL以返回警告行

时间:2013-09-19 21:43:53

标签: mysql sql utf-8

我正在努力将具有一堆latin1编码列的数据库转换为utf8。有许多行被错误编码,需要从latin1转换 - >在我迁移整个列之前的utf8。我编写了一个脚本,使用以下查询识别有问题的行:

SELECT count(*) as count
FROM `user_profiles` 
WHERE CONVERT(CAST(`last_name` AS binary) USING utf8) IS NULL;

在本地,它返回4,000行的计数。当我在生产中运行时,我得到一个空的结果,有4,000个警告。必须有一些设置告诉MySQL正常返回警告或者我缺少的东西。有什么想法吗?

我已经尝试确保所有字符集变量都设置为UTF8。服务器正在运行mysql 5.5.29,我在本地运行5.6.13。

1 个答案:

答案 0 :(得分:0)

答案是将sql_mode设置为更自由的设置。具体而言,STRICT_TRANS_TABLESNO_ENGINE_SUBSTITUTION似乎解决了这个问题。

您可以在SQL查询开始时执行以下命令来实现:

SET `sql_mode` = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION';