【发布时间】:2015-05-12 11:10:18
【问题描述】:
我有一个 Rails 应用程序。有时,当用户在文本字段中写入并执行查询以更新 MySQL 数据库中的该字段时,我会收到以下错误日志:
更新船 SET 描述 = 'Vive la experiencia única de navegar abordo de un clásico de madera de lujo como Mako。 Te emocionará.', updated_at = '2015-03-10 20:10:32' WHEREboats.id = 1
E, [2015-03-10T20:10:32.223430 #20343] ERROR -- : Mysql2::Error: Incorrect string value: '\xE2\x80\xA8\x09Te...' for column 'description' at row 1: UPDATE boats SET description = 'Vive la experiencia única de navegar abordo de un clásico de madera de lujo como Mako.
Te emocionará.', updated_at = '2015-03-10 20:10:32' WHERE boats.id = 1
注意:抱歉,我无法将上面的代码作为代码。必须有特殊字符。
我希望用户可以添加任何字符而不会出错。
我有一个开发和生产环境。该错误仅在生产中发生。
我看到这个帖子和我的问题看起来一样:Mysql2::Error: Incorrect string value
我运行此查询show variables like 'char%'; 来检查数据库字符配置并:
开发:
'character_set_client', 'utf8'
'character_set_connection', 'utf8'
'character_set_database', 'utf8'
'character_set_filesystem', 'binary'
'character_set_results', 'utf8'
'character_set_server', 'utf8'
'character_set_system', 'utf8'
'character_sets_dir', '/usr/local/Cellar/mysql/5.6.19/share/mysql/charsets/'
生产:
'character_set_client', 'utf8'
'character_set_connection', 'utf8'
'character_set_database', 'latin1'
'character_set_filesystem', 'binary'
'character_set_results', 'utf8'
'character_set_server', 'latin1'
'character_set_system', 'utf8'
'character_sets_dir', '/usr/share/mysql/charsets/'
所以,我执行ALTER DATABASE yanpyprod CHARACTER SET utf8 COLLATE utf8_general_ci; 将我的数据库字符集更新为utf8。
但是,将字符集更改为utf8后,我仍然收到同样的错误。
【问题讨论】:
标签: mysql ruby-on-rails utf-8