【问题标题】:large sql query causes error when line breaks removed删除换行符后,大型 sql 查询会导致错误
【发布时间】: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 个子查询,我从不指望任何人都可以浏览它。我知道这个错误是无用的,这就是为什么我要求一点方向...... :(
  • 这是用户错误。当我“全部”删除它们时,我错过了一条评论。我正在使用 -- 语法,该语法排除了该行的其余部分 - 删除换行符时删除了查询的其余部分。问题解决了。

标签: mysql node.js


【解决方案1】:

在查询中遗漏了一条评论。我使用的是 -- MySQL 注释语法,它一直到行尾。删除换行符后 - 查询在该注释处终止。

感谢收看;希望这对其他人有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多