服务器和本地shell环境字符集不一致时,SQL语句包含中文字符时,无法正确执行,本文说明这个问题的解决办法。
用mysql -u -p database < file.sql
批量执行SQL语句时,当file.sql
中包含中文字符时,在本地环境可以正确执行,在托管服务上无法执行。比如使用
select * from table where name lik "%张三%;" |
即使数据库中存在符合条件的记录,mysql也不返回任何结果。初步判断应该是字符集编码的差异,通过在命令中加上参数指定字符集:
mysql --default-character-set=utf8 |
指定字符集后运行结果正确。