【问题标题】:Drupal 7 utf8mb4 support: "Please convert tables" warning... after converting tablesDrupal 7 utf8mb4 支持:“请转换表”警告..​​.转换表后
【发布时间】:2018-10-31 15:16:45
【问题描述】:

我在 Drush 中看到的完整错误是:

请先将所有数据库表转换为 utf8mb4,然后在 settings.php 中启用它。请参阅有关添加 [警告] 的文档 4 字节 UTF-8 支持以获取更多信息。 (目前使用 Database 4 byte UTF-8 support Enabled,但 database 表格需要转换)

我正在使用最新版本的 Drupal 7。我已将所有表转换为 utf8mb4_unicode_ci。我首先通过提示手动执行此操作,但随后在表和字段上使用 phpMyAdmin 再次运行更新(只是为了确保,因为 Drush 仍然告诉我“请在 settings.php 中启用之前将所有数据库表转换为 utf8mb4 .") 所有表都设置为 InnoDB。

在 my.cnf 文件中,我确定我有

[mysqld] innodb_large_prefix=true innodb_file_format=barracuda innodb_file_per_table=true

同一服务器上的另一个站点启用了 utf8mb4 支持,并且没有抛出错误。两个站点都使用最新版本的 PHP 5.6.x。 Drush 版本是 8.1.2。 MySql 是 5.5.x 的最新版本。

我已经通过 drush cc all 清除了所有 Drupal 缓存并重新启动了 MySQL 服务器。设置在带有 Plesk 的 Ubuntu 下。

寻找我可能遗漏的内容以及 Drupal 为什么要求我转换看起来已经转换的表的想法(phpMyAdmin 确实将排序规则显示为 utf8mb4_unicode_ci。)

【问题讨论】:

    标签: drupal-7 utf8mb4


    【解决方案1】:

    请参阅https://www.drupal.org/forum/support/upgrading-drupal/2018-04-03/upgrade-to-758-database-utf-8-issues#comment-12968331。此消息不是来自深度 sql 分析,而是取决于布尔变量 drupal_all_databases_are_utf8mb4 的值。无论您是手动还是通过推荐的 drush 脚本 (https://www.drupal.org/project/utf8mb4_convert) 转换表格后,此变量都需要设置为 TRUE,我认为该脚本会为您设置。

    -布罗尼乌斯

    【讨论】:

    • 不知何故错过了你的答案,被提醒了这个问题。运行升级脚本就可以解决问题,而无需进行任何额外的修改。谢谢!
    【解决方案2】:

    settings.php 中是否设置了排序规则和字符集?

    $databases['default']['default'] = array(
      'driver' => 'mysql',
      'database' => 'databasename',
      'username' => 'username',
      'password' => 'password',
      'host' => 'localhost',
      'charset' => 'utf8mb4',
      'collation' => 'utf8mb4_general_ci',
    );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-09
      • 2011-07-05
      • 2014-02-16
      • 1970-01-01
      • 1970-01-01
      • 2021-02-26
      • 1970-01-01
      相关资源
      最近更新 更多