我有一个在生产模式下运行的 Rails 应用程序,但是今天当用户尝试保存记录时突然出现此错误。
Mysql2::Error: Incorrect string value
更多详细信息(来自生产日志):
Parameters: {"utf8"=>"â<9c><93>" ...
Mysql2::Error: Incorrect string value: '\xC5\x99\xC3\xA1k
Mysql2::Error: Incorrect string value: '\xC5\x99\xC3\xA1k
现在我看到一些解决方案需要删除数据库并重新创建它,但我不能这样做。
现在 mysql 显示如下:
mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| 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/ |
+--------------------------+----------------------------+
8 rows in set (0.04 sec)
出了什么问题,我该如何更改它,这样我的任何角色都不会出现任何问题?
另外:这个问题可以用javascript解决吗?发送前先转换一下吗?
Thanks
问题是由你的mysql服务器端的字符集引起的。您可以手动配置,例如:
ALTER TABLE your_database_name.your_table CONVERT TO CHARACTER SET utf8
或者删除表并重新创建它,如下所示:
rake db:drop
rake db:create
rake db:migrate
参考:
https://stackoverflow.com/a/18498210/2034097 https://stackoverflow.com/a/18498210/2034097
https://stackoverflow.com/a/16934647/2034097 https://stackoverflow.com/a/16934647/2034097
UPDATE
第一个命令只影响指定的表,如果你想更改数据库中的所有表,你可以这样做
ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_general_ci;
参考:
https://stackoverflow.com/a/6115705/2034097 https://stackoverflow.com/a/6115705/2034097
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)