LIMIT附近的错误,但仅在我使用冒号时

时间:2017-05-12 17:18:49

标签: mysql mariadb

我试图运行此查询:

SELECT wins FROM players WHERE auth = '[U:1:123456789]' LIMIT 1;

但是我收到以下错误:

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

但是,当我删除LIMIT 1时,它可以正常工作。

如果我将查询更改为这样,它也有效:

SELECT wins FROM players WHERE auth = '[123456789]' LIMIT 1;

我很困惑,我做错了什么?似乎冒号只是打破了查询。

编辑:创建表

CREATE TABLE `players` (
 `auth` varchar(32) NOT NULL,
 `name` varchar(32) NOT NULL DEFAULT '< blank >',
 `wins` int(11) NOT NULL DEFAULT '0',
 PRIMARY KEY (`auth`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

2 个答案:

答案 0 :(得分:2)

四个选项(最有可能开始):

0)您的SQL数据库版本或PHPMyAdmin版本非常非常过时,应尽快更新。

1)您在PHP PDO界面上运行SQL,该界面使用Colons标记输入变量。 See here

2)MariaDb使用冒号作为特殊字符,需要正确转义。

3)不知怎的,你有两个LIMIT(由Tadman指导,PhpMyAdmin或你自己的PHP接口正在添加一个LIMIT),当不需要时。

答案 1 :(得分:0)

它最终成为phpMyAdmin(我用来运行queryh的客户端)SQL解析器的问题。

从phpMyAdmin的4.7.1开始,它应该被修复。

https://github.com/phpmyadmin/sql-parser/commit/4f85b6d8d3a3ddcf6ff216c116cf305978e9a3d2