在我的导轨4.2应用程序中,我偶然发现了奇怪的问题。我不得不将MySQL编码切换到UTF8MB4(以允许帖子中的表情符号)。我已将MySQL更新为5.7,更改的tabel等。使用:
更新了数据库。encoding: utf8mb4
collation: utf8mb4_unicode_ci
所有运行Mac OS的本地计算机上的一切都可以。
在测试服务器上,我执行了相同的步骤和配置。但是,如果我设置
encoding: utf8mb4
在数据库中我得到
Mysql2::Error Can't initialize character set utf8mb4 (path: /usr/share/mysql/charsets/)
我在这两台机器上在我的.cnf中完成的MySQL的其他MySQL设置:
innodb_file_format = Barracuda
innodb_large_prefix
innodb_file_per_table = 1
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8mb4'
innodb_file_format_max = Barracuda
innodb_strict_mode = 1
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
我可以在测试服务器上添加表情符号,但可以通过Rails应用程序添加。在这两台机器上,我是USIGN mysql2
版本0.3.21
。什么会导致这个问题?
ps。即使我在本地我都没有它,也我在测试机上添加了utf8mb4到index.xml,但没有帮助。
也许这会有所帮助:ror: application_controller.rb
:
def configure_charsets
response.headers["Content-Type"] = "text/html; charset=UTF-8"
suppress(ActiveRecord::StatementInvalid) do
ActiveRecord::Base.connection.execute 'SET NAMES utf8mb4'
end
end