重装Debian后恢复TYPO3备份遇MariaDB字符集错误求助
解决TYPO3 6.2与MariaDB 10.11的字符集不匹配错误
1. 修正TYPO3配置文件
编辑站点根目录下的typo3conf/LocalConfiguration.php,找到$GLOBALS['TYPO3_CONF_VARS']['DB']数组,确保参数如下配置:
'DB' => [ 'database' => '你的数据库名', 'host' => 'localhost', 'password' => '你的数据库密码', 'username' => '你的数据库用户名', 'charset' => 'utf8', 'driver' => 'mysqli', 'setDBinit' => 'SET NAMES utf8;', ],
- 必须设置
setDBinit为SET NAMES utf8;,强制数据库连接使用utf8字符集 charset值固定为utf8,TYPO3 6.2不支持utf8mb4
2. 调整MariaDB全局字符集配置
编辑MariaDB主配置文件(通常路径为/etc/mysql/mariadb.conf.d/50-server.cnf),在[mysqld]段添加或修改以下内容:
[mysqld] character-set-server=utf8 collation-server=utf8_general_ci init_connect='SET NAMES utf8;'
保存后重启MariaDB服务:
systemctl restart mariadb
3. 检查并修复数据库/表的字符集
登录MariaDB命令行:
mariadb -u 数据库用户名 -p
执行命令检查数据库字符集:
SHOW CREATE DATABASE 你的数据库名;
若字符集不是utf8,执行修改命令:
ALTER DATABASE 你的数据库名 CHARACTER SET utf8 COLLATE utf8_general_ci;
接着检查所有表的字符集:
SHOW TABLE STATUS FROM 你的数据库名;
若存在非utf8字符集的表,执行以下查询生成批量修改语句(替换your_db为你的数据库名):
SELECT CONCAT('ALTER TABLE ', table_name, ' CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;') FROM information_schema.tables WHERE table_schema = 'your_db' AND table_type = 'BASE TABLE';
将查询输出的所有ALTER TABLE语句复制执行,完成表字符集修复。
4. 配置PHP mysqli默认字符集
编辑PHP 5.6的Apache配置文件(通常路径为/etc/php/5.6/apache2/php.ini),找到mysqli.default_charset参数,设置为:
mysqli.default_charset = utf8
保存后重启Apache服务:
systemctl restart apache2
完成以上操作后,重新访问TYPO3后台或安装页面即可解决字符集错误。
内容的提问来源于stack exchange,提问作者Rossi
相关产品推荐
相关产品推荐

