【问题标题】:Can you find the Error in my SQL syntax?你能在我的 SQL 语法中找到错误吗?
【发布时间】:2011-04-21 22:06:42
【问题描述】:

我尝试构建获取 SQL 数据的 Visual Studio 项目。

错误是:1064 检索数据库信息时出错。 SQL 语法错误。

我不知道错误在哪里。

 sQuery = string.Format("select distinct stringid from {0} where TIMESTAMPDIFF( day, insertts, now() ) < 30 " +
          "and status = '{2}' and stringid not in (select distinct stringid from {1} where TIMESTAMPDIFF( day, insertts, now() ) < 30)",

任何事情都会有帮助。

谢谢

【问题讨论】:

  • 您可以打印已经格式化为值的 sQuery 吗?您提供的参数数据可能有问题
  • @Martin 我的错。没有看到代码中的详细信息。缺少代码。所以我不是那种一心多用的人。
  • 能否请您进入 sQuery 并在此处为我们打印 sQuery 的输出。
  • @Martin 等人,错误 1064 是常见的 MySQL 错误,意思是“您的语法已被破坏”。
  • MySQL RDBMS 在另一台计算机上远程运行。我为另一个应用程序获取数据,但没有为具有此代码的应用程序获取数据。抱歉,我对此很陌生。

标签: c# mysql sql visual-studio


【解决方案1】:

字符串格式化操作对我来说看起来不错(尽管信息有限),但有几种可能性。

  1. 检查结果字符串的格式是否有效。我的意思是在执行之前打印出sQuery。由于 MySQL 错误 1064 是一个相当普遍的“错误语法”错误,因此可能是给 String.Format 的参数正在形成错误的查询(例如 {2} 包含 ' 字符)。

    李>
  2. 确保目标 DBMS 运行 MySQL 5 或更高版本。 TIMESTAMPDIFF 在此之前不可用。

  3. 尝试在实际目标 DBMS 中而不是通过代码运行完全相同的查询(使用您在上面 (1) 中打印的内容)。错误 1064 通常会为您提供错误消息的 near 'blah blah blah' 附录,这有助于准确确定问题所在的语句何处

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    • 1970-01-01
    • 1970-01-01
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    • 2022-10-15
    相关资源
    最近更新 更多