在太阳下
不管你喜不喜欢,高不高兴,爱与不爱;太阳照旧照耀着你!温暖着你!

Discuz! X3.4 报错 Discuz! Database Error

Discuz! X3.4 报错 Discuz! Database Error
TIME 2023-05-03 12:00

Discuz! Database Error

(1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘system>0’ at line 1

SELECT COUNT(*) FROM common_usergroup WHERE type=’special’ and system>0

PHP Debug

No. File Line Code
1 admin.php 58 require(%s)
2 source/admincp/admincp_styles.php 261 updatecache()
3 source/function/function_cache.php 47 build_cache_setting()
4 source/function/cache/cache_setting.php 98 table_common_usergroup->buyusergroup_exists()
5 source/class/table/table_common_usergroup.php 135 discuz_database::result_first()
6 source/class/discuz/discuz_database.php 118 discuz_database::query()
7 source/class/discuz/discuz_database.php 137 db_driver_mysqli->query()
8 source/class/db/db_driver_mysqli.php 147 db_driver_mysqli->halt()
9 source/class/db/db_driver_mysqli.php 222 break()
已经将此出错信息详细记录, 由此给您带来的访问不便我们深感歉意.


出现这个错误是因为
数据库执行了一条 SQL 查询语句,并且该语句中包含有一个错误的语法。
具体来说,查询语句如下:

SELECT COUNT(*) FROM common_usergroup WHERE type='special' and system>0

该查询语句的目的是查询特殊用户组(type=’special’)中系统用户组(system>0)的数量。然而,在该语句中出现了一个语法错误,即 system>0 前面缺少了一个空格,应该改为 system > 0 才是正确的语法。
因此,你需要修改该查询语句,将 system>0 改为 system > 0 即可解决该问题。

如何修改?

在 phpMyAdmin 中修改 SQL 查询语句的步骤如下:

  1. 登录 phpMyAdmin 并选择相应的数据库。
  2. 点击左侧导航栏中的“SQL”选项卡,进入 SQL 语句执行页面。
  3. 在文本框中输入需要修改的查询语句:
SELECT COUNT(*) FROM common_usergroup WHERE type='special' and system>0
  1. 点击“执行”按钮,执行查询语句。
  2. 如果该查询语句存在语法错误,phpMyAdmin 将会提示“1064 You have an error in your SQL syntax”的错误消息。
  3. 在错误消息的后面,将显示引起错误的 SQL 查询语句中的具体错误位置。
  4. 找到该错误位置,并进行修改。在本例中,需要将 system>0 改为 system > 0 才是正确的语法。
  5. 修改完成后,再次点击“执行”按钮,执行修改后的查询语句。
  6. 如果没有语法错误,phpMyAdmin 将会显示查询结果。

注意:在进行任何数据库操作之前,请务必备份您的数据!

返回结果


错误

SELECT COUNT(*) FROM common_usergroup WHERE type='special' and system>0 LIMIT 0, 25

MySQL 返回: 

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'system>0 LIMIT 0, 25' at line 1

该查询语句尝试从 common_usergroup 表中查询特殊用户组(type=’special’)中系统用户组(system>0)的数量,并且限制返回结果的行数为 25 行。
然而,在该语句中出现了一个语法错误:system>0 前面少了一个空格。应该将 system>0 修改为 system > 0 才是正确的语法。
因此,修改该查询语句如下

SELECT COUNT(*) FROM common_usergroup WHERE type='special' AND system > 0 LIMIT 0, 25

还是报错

SELECT COUNT(*) FROM common_usergroup WHERE type='special' AND system > 0 LIMIT 0, 25;

#1064 – You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘system > 0 LIMIT 0, 25’ at line 1

观察错误信息,发现错误提示为 near 'system > 0 LIMIT 0, 25' at line 1,说明该语句存在问题的部分在 LIMIT 关键字之前。
经过排查,发现 MySQL 数据库中有一个名为 system 的保留字,不能直接用作标识符或表达式名称。因此,在该查询语句中,需要将 system 名称用反引号(`)括起来,以避免与保留字冲突,即:

SELECT COUNT(*) FROM common_usergroup WHERE type='special' AND `system` > 0 LIMIT 0, 25;

这样就解决了该语法错误问题。

点击数:18

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
Verified by MonsterInsights