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

Error near LIMIT but only when I use colons

我正在尝试 运行 这个查询:

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;

我很困惑,我做错了什么?似乎冒号会破坏查询。

编辑:创建 TABLE

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

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

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

1) 你是 运行 SQL PHP PDO 接口,它使用冒号来标记输入变量。 See here.

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

3) 你有两个 LIMIT(正如 Tadman 提到的那样,PhpMyAdmin 或你自己的 PHP 界面正在添加一个 LIMIT),但不需要一个。

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

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

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