在我的Rails 4.2应用程序中,我偶然发现了一个奇怪的问题。我不得不将mysql编码切换为utf8mb4(以允许在帖子中使用表情符号)。
我已经将MySql更新为5.7,更改了表格等。使用以下命令更新了database.yml:
encoding: utf8mb4
collation: utf8mb4_unicode_ci
一切都在运行Mac OS的本地计算机上运行。
在测试服务器上,我已经完成了相同的步骤和配置。但是如果我设定
encoding: utf8mb4
在database.yml中
我懂了
Mysql2::Error Can't initialize character set utf8mb4 (path: /usr/share/mysql/charsets/)
我在两台机器上的my.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应用程序添加表情符号。
在两台计算机上,我都使用
mysql2
版本0.3.21
。什么会导致此问题?
PS。甚至我本地都没有,我已经在测试机的Index.xml中添加了utf8mb4,但没有帮助。
最佳答案
也许会有所帮助: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
关于mysql - Mysql2::Error无法初始化字符集utf8mb4(路径:/usr/share/mysql/charsets/),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45981206/