在我的 Rails 4.2 应用程序中,我偶然发现了一个奇怪的问题。我不得不将 mysql 编码切换为 utf8mb4(以允许在帖子中使用表情符号)。 我已经将 MySql 更新到 5.7,更改了表格等。更新了 database.yml 为:
encoding: utf8mb4
collation: utf8mb4_unicode_ci
一切都在我运行 mac OS 的本地机器上运行。
在测试服务器上,我完成了相同的步骤和配置。但是如果我设置
encoding: utf8mb4
在数据库.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
。
什么会导致这个问题?
附言。即使我的本地没有它,我也已将 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
关于Mysql2::Error 无法初始化字符集utf8mb4 (路径:/usr/share/mysql/charsets/),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45981206/