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

迁移Debian服务器后WordPress出现MariaDB SQL语法错误

解决WordPress迁移Debian服务器后MariaDB SQL语法错误问题

看起来你遇到的是迁移后数据库查询的语法兼容性问题,结合报错里的截断点LI(大概率是LIMIT的不完整写法)和MariaDB的语法严格性差异,我整理了几个排查和修复步骤:

1. 先获取完整的错误SQL语句

报错里只显示了部分查询,我们需要看到完整语句才能精准定位问题:

  • 编辑WordPress根目录下的wp-config.php,添加或修改以下配置:
    define('WP_DEBUG', true);
    define('WP_DEBUG_LOG', true);
    define('WP_DEBUG_DISPLAY', false);
    
  • 触发报错操作(比如刷新出问题的页面),然后打开wp-content/debug.log文件,找到对应的完整SQL查询语句,重点看ORDER BY之后的部分是否有语法残缺(比如是不是LIMIT被截断成了LI)。

2. 检查MariaDB的SQL_MODE设置

新Debian服务器上的MariaDB默认SQL_MODE可能比旧服务器更严格(比如开启了ONLY_FULL_GROUP_BY、STRICT_TRANS_TABLES等),这会导致旧环境下能运行的不规范SQL报错:

  • 临时测试:登录MariaDB命令行,执行以下命令修改全局SQL_MODE:
    SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION';
    
    然后刷新网站,看错误是否消失。
  • 永久生效:如果临时修改有效,编辑Debian上的MariaDB配置文件/etc/mysql/mariadb.conf.d/50-server.cnf,在[mysqld]段落添加:
    sql_mode = NO_ENGINE_SUBSTITUTION
    
    保存后重启MariaDB服务:
    sudo systemctl restart mariadb
    

3. 排查查询语句的来源与完整性

  • 如果完整SQL显示ORDER BY后面确实是残缺的LI,那大概率是主题或某个插件的自定义查询代码存在字符串拼接错误,比如LIMIT参数没有正确传递,或者代码在迁移后的PHP环境下出现了变量截断。
  • 可以先禁用所有插件,切换到默认主题(比如Twenty Twenty-Four),看错误是否消失——如果消失,再逐个启用插件/切换主题,定位到出问题的代码,然后修复其SQL拼接逻辑。

4. 验证数据库字符集与排序规则

迁移时如果没有同步数据库的字符集和排序规则,也可能导致语法解析问题:

  • 登录MariaDB,查看WordPress数据库的字符集:
    SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME FROM INFORMATION_SCHEMATA WHERE SCHEMA_NAME = '你的WordPress数据库名';
    
  • 确保和旧服务器的字符集一致(比如都是utf8mb4,排序规则utf8mb4_unicode_ci),如果不一致,可以执行以下命令修改(注意先备份数据库):
    ALTER DATABASE 你的数据库名 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    

5. 确保WordPress及插件版本兼容

如果旧服务器用的是较老版本的WordPress,而新服务器的MariaDB版本较新,可能存在兼容性问题:

  • 备份数据库和文件后,将WordPress升级到最新稳定版,同时更新所有插件到兼容版本,再测试错误是否解决。

内容的提问来源于stack exchange,提问作者Maciek M

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:20:14