Drupal 7 utf8mb4支持:“请转换表格”警告..​​.转换表格后

时间:2018-10-31 15:16:45

标签: drupal-7 utf8mb4

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

  

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

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

在my.cnf文件中,我已确保

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

同一服务器上的另一个站点已启用utf8mb4支持,并且不会引发错误。这两个站点都使用最新版本的PHP5.6.x。 Drush版本是8.1.2。 MySql是最新版本的5.5.x。

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

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

2 个答案:

答案 0 :(得分: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的值。无论您是手动进行表格转换,还是通过建议的草稿脚本(https://www.drupal.org/project/utf8mb4_convert)(我认为)都会为您设置此变量,都需要在表转换后将此变量设置为TRUE

-Bronius

答案 1 :(得分:0)

您在settings.php中设置了排序规则和字符集吗?

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