2011-10-10 55 views
2

我使用rails 2.3.11并在我的prod机器上出现此异常。在我的开发机器上它运行良好,Bascially Iam提交了一个textarea,内容很大,我的数据库中的'message'是文本类型的,所以典型的应该不会有任何问题。ActiveRecord :: StatementInvalid:Mysql ::错误:不正确的字符串值:' xE2 x98 xBA。 x0D x0A ...'

ActiveRecord::StatementInvalid: Mysql::Error: Incorrect string value: 
'\xE2\x98\xBA.\x0D\x0A...' for column 'message' at row 1: INSERT INTO `table_xyz 
+0

你使用相同的数据库进行开发和生产???检查你的生产数据库???也提供你的代码编写相同.. – Salil

+0

这应该是哪个字符集/编码?如果你指定了utf8,那么它会被拒绝,因为它是一个无效的utf8序列。 – tripleee

+0

这[答案] [1]应该帮助 [1]:http://stackoverflow.com/questions/947975/how-can-i-process-data-to-avoid-mysql-incorrect-字符串值错误 – ScottJShea

回答

0

我已经看到这种情况发生(太多次)当数据库/表中的一个被正确配置为使用UTF-8,另一种是使用不同的字符集/归类,比如拉丁文。当填充utf8数据库时,它是通过复制拉丁数据库中的数据完成的。当数据包含unicode字符(如☃)时,后续更新/ utf8数据库条目将失败。这可能是因为即使没有数据复制,不正确的数据库字符集/排序规则也会导致这种情况。它有时也可以帮助确保您的数据库yml包含encoding: utf8

+4

FWIW,\ xE2 \ x98 \ xBA是☺的Unicode字符串文字。 –

相关问题