Drupal 7.5 开始支持 utf8mb4,一种数据库字符集,有了它你的文章里就可以用 emoji 了,就是这种东西: 😀 😬 😁 😄 😊 。先看一下自己的环境是不是满足 Drupal 的要求,如果满足就可以配置数据库,修改 Drupal 的配置文件,转换数据表,让你的 Drupal 支持 emoji 。
需求
- mysql 5.5.3 或以上版本。
- PHP MySQL 引擎必须支持 utf8mb4 字符集, libmysqlclient 5.5.3 或以上,mysqlnd 5.0.9 或以上。
配置数据库
编辑配置文件(/etc/my.cnf),在 mysqld 区域的下面,添加需要的配置。像这样:
[mysqld] innodb_large_prefix=true innodb_file_format=barracuda innodb_file_per_table=true
重启数据库:
sudo systemctl restart mysqld
如果是 mariadb:
sudo systemctl restart mariadb
配置 Drupal
修改 Drupal 的配置文件(settings.php),在数据库相关的配置里面,添加 charset 与 collation 选项。参考:
$databases['default']['default'] = array( 'driver' => 'mysql', 'database' => 'databasename', 'username' => 'username', 'password' => 'password', 'host' => 'localhost', 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_general_ci', );
准备工具
把数据表从 utf8 转换成 utf8mb4,可以使用一个 drush 插件,先下载这个插件:
drush @none dl utf8mb4_convert-7.x
返回:
Project utf8mb4_convert (7.x-1.0-beta2) downloaded to /root/.drush/utf8mb4_convert. [success] Project utf8mb4_convert contains 0 modules: .
清空 drush 缓存:
drush cc drush
开始转换
打开网站维护模式:
drush vset maintenance_mode 1
执行转换:
drush utf8mb4-convert-databases
返回:
This will convert all databases defined in settings.php to utf8mb4. Back up your databases before continuing! Continue? (y/n): y Target MySQL database: xx@localhost (default:default) Converting database: xx Converting table: actions Converting table: advanced_help_index Converting table: authmap Converting table: backup_migrate_destinations Converting table: backup_migrate_profiles Converting table: backup_migrate_schedules
成功以后,关掉网站维护模式:
drush vset maintenance_mode 0
验证转换结果:
drush sql-cli show table stauts where name like 'users'
你会看到:
utf8mb4_general_ci
说明转换成功了,在 Drupal 后台去创建一个新内容,里面添加几个表情符号试一下。
Drupal