我在Drush中看到的完整错误是:
在settings.php中启用之前,请将所有数据库表转换为utf8mb4。有关更多信息,请参阅有关添加[警告] 4字节UTF-8支持的文档。 (目前使用数据库4字节UTF-8支持已启用,但数据库表需要转换)
我正在使用最新版本的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服务器。该设置在Ubuntu下与Plesk一起使用。
寻找关于我可能错过的想法,以及为什么Drupal要求我转换看起来像已被转换的表格(phpMyAdmin确实将整理显示为utf8mb4_unicode_ci。)
Pleasse看到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脚本(TRUE
)(我认为)都会为你设置这个变量,这个变量需要在表格转换后设置为https://www.drupal.org/project/utf8mb4_convert。
-Bronius
你在settings.php
有整理和字符集吗?
$databases['default']['default'] = array(
'driver' => 'mysql',
'database' => 'databasename',
'username' => 'username',
'password' => 'password',
'host' => 'localhost',
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_general_ci',
);