You need to enable JavaScript to run this app. 迁移主机后旧PHP版发票系统触发MariaDB SQL语法错误1064求助
优惠活动
大模型
产品
解决方案
定价
更多

迁移主机后旧PHP版发票系统触发MariaDB SQL语法错误1064求助

问题根因

你遇到的1064 SQL语法错误是因为rows是MySQL/MariaDB的保留关键字,旧版本数据库对保留字用作字段别名的校验规则宽松不会报错,新主机的数据库版本更高,校验规则收紧后就会直接抛出语法错误。

修复方案

方案一(最优,永久兼容)

修改COUNT查询的别名为非保留字,同时同步修改取值代码:

  1. 找到生成$count变量的逻辑,将原来的SELECT COUNT(*) as rows修改为SELECT COUNT(*) as total_rows
  2. 修改interface_base.php第295行的代码:
// 原代码
$this->count_all = $this->db->query($count.$from.$join.$where.$order)->row()->rows;
// 修改后
$this->count_all = $this->db->query($count.$from.$join.$where.$order)->row()->total_rows;

方案二(临时兼容,无需修改取值逻辑)

保留别名不变,给保留字加反引号转义:找到生成$count变量的逻辑,将SELECT COUNT(*) as rows修改为SELECT COUNT(*) as \rows``即可。

额外优化建议

COUNT查询仅统计总条数,拼接$order排序逻辑完全不影响计数结果,还会增加不必要的查询开销,你可以在生成COUNT查询时去掉$order部分的拼接,进一步提升查询效率。

内容的提问来源于stack exchange,提问作者Владислав Влаев

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 19:06:04