You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

重装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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 23:20:55