在我的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/

10-14 06:52