【发布时间】:2012-04-30 01:40:49
【问题描述】:
我有一个从 Node.JS 进程运行的非常大且复杂的 MySQL 查询,但我遇到了一个奇怪的错误。
查询大约有 150 行 SQL 代码,所以我不打算包含它,但我知道它很好。它在 JS 源代码中写为变量,每行末尾带有 \ 以继续字符串。如果我从源中复制 SQL 并删除 \s 它运行完美。但是,当我通过应用程序运行它时,我感到很害怕:
MySQL: 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 '' at line 1
'' 在我查询的巨大单行中的任何位置 - 感谢 MySQL。
当我让应用程序将 SQL 输出到屏幕并复制并粘贴它时,我在 MySQL 中遇到了同样的错误。我决定通过 diff 运行 2 个查询(删除时的源和输出),唯一的区别是换行符 - 源有换行符,而输出没有。我还应该注意,这个应用程序中更简单的查询确实有效,所以这个查询中有一些东西导致了这种情况。
删除换行符后,MySQL 查询可能会发生什么变化?是否有一些我不知道的行或空格限制?我的理解是 MySQL 会忽略所有换行符和空格。这不是真的吗?有人能指出我正确的方向来解决这个问题吗?
我删除了一些 cmets,删除了一些空白行,我将制表符转换为空格。我没有想法。
谢谢,
白原子
【问题讨论】:
-
老实说,如果不看一下您的选择查询,这真的很难说。上面的错误根本不是描述性的。如果可以,请将查询简化为几行并放在此处。
-
这是最大的问题.. 更简单的查询没有问题。它大约有 20 个子查询,我从不指望任何人都可以浏览它。我知道这个错误是无用的,这就是为什么我要求一点方向...... :(
-
这是用户错误。当我“全部”删除它们时,我错过了一条评论。我正在使用 -- 语法,该语法排除了该行的其余部分 - 删除换行符时删除了查询的其余部分。问题解决了。