MySQL [错误] 1064

Posted

技术标签:

【中文标题】MySQL [错误] 1064【英文标题】:MySQL [Error] 1064 【发布时间】:2017-06-15 09:45:45 【问题描述】:

当我在 Navicat 的 VIEWS 表上运行 EXPLAIN 时,我得到了这个 mysql 错误 1064,并且无法弄清楚这个简短代码中的错误究竟来自哪里:

SET @runningbal = 0;
SELECT
cashinflow_v.TxnDate,
cashinflow_v.TxnType,
cashinflow_v.Amount,    
@runningbal := @runningbal + cashinflow_v.Amount as Balance
FROM
cashinflow_v
ORDER BY cashinflow_v.TxnDate

错误提示:

[SQL] EXPLAIN SET @runningbal = 0;
SELECT
cashinflow_v.TxnDate,
cashinflow_v.TxnType,
cashinflow_v.Amount,
@runningbal := @runningbal + cashinflow_v.Amount as Balance
FROM
cashinflow_v
ORDER BY cashinflow_v.TxnDate

[Err] 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 'SET 
@runningbal = 0;
SELECT
cashinflow_v.TxnDate,
cashinflow_v.TxnType,
cash' at line 1

如果有人可以帮助我,我将不胜感激。谢谢!

【问题讨论】:

设置前有密码吗? 实际上没有。我正在使用 Navicat。 【参考方案1】:

变化:

来自:

EXPLAIN SET @runningbal = 0;

 SET @runningbal = 0;

【讨论】:

如果存在 [SQL] 也会删除。 实际上它在没有解释的情况下运行。但我只是担心,当我运行 EXPLAIN 来检查查询的性能时,它会给我那个消息错误。 这是您的问题,这就是我发布更改它的原因。 谢谢。很好的帮助!【参考方案2】:

EXPLAIN statement 需要表名或以下类型之一的查询:

选择 删除 插入 替换 更新

它的设计目的不是提供任意 SQL 命令的信息(怎么可能?)。

如果是您的 SQL 客户端试图解释查询,您可能需要指示它将代码块作为脚本而不是单独的语句来处理。

【讨论】:

抱歉忘了提及我使用的是 VIEWS(虚拟表)而不是 DB 表本身。话虽如此,您的意思是 EXPLAIN 不能在 VIEWS 表上运行? 我不认为我是在说...我是说你不能像EXPLAIN SET @runningbal = 0; 那样对随机代码 sn-ps 运行解释。

以上是关于MySQL [错误] 1064的主要内容,如果未能解决你的问题,请参考以下文章

MySQL:错误 1142 (42000) 和错误 1064 (42000)

mysql error (#1064) 存储过程创建错误

MySQL #1064 - 您的 SQL 语法 2020 有错误 [重复]

MySQL 错误 1064 内连接

MySQL 1064 错误

从 MSSQL 迁移到 MYSQL 错误 1064 MYSQL Workbench