使用 Accounts.UUID 和 UUID = 时的 MySQL 语法问题,有两个表

Posted

技术标签:

【中文标题】使用 Accounts.UUID 和 UUID = 时的 MySQL 语法问题,有两个表【英文标题】:MySQL Syntax Issue when using Accounts.UUID AND UUID =, with two tables 【发布时间】:2019-01-23 19:29:17 【问题描述】:

我在使用这个时遇到了问题:

WARN com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 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 'WHERE Accounts.UUID = WarAccounts.UUIDAND Accounts.UUID = 'c7a00fe7-826d-46da-b4' at line 1

这里是 SQL:

SELECT
  *
FROM
  Accounts,
  WarAccounts
WHERE
  Accounts.UUID = WarAccounts.UUID
  AND Accounts.UUID = ?

(使用准备好的语句)

我很困惑这是什么问题导致了这个问题,我用谷歌搜索了它但找不到任何东西,因为这似乎是正确的方法。

服务器类型:MySQL 服务器版本:5.5.58-0ubuntu0.14.04.1 - (Ubuntu)

【问题讨论】:

Accounts.UUID = WarAccounts.UUIDAND Accounts.UUID = 不是这样,它们在不同的行上。 同样,UUIDAND 之间不需要空格。只需阅读您的异常警告...将String 打印到控制台并查看发生了什么。如果你得到 UUID AND,我帮不了你 谢谢,但没有用。 对不起。我希望你能得到正确的答案。祝你好运,朋友 【参考方案1】:

野驴猜测:

在 C# 中我会这样做:

string query = "SELECT *" + 
               "FROM MYTABLE" +
               "WHERE 1=1"

..得到你的错误..

连接字符串,你会看到问题:

"SELECT *FROM MYTABLEWHERE 1=1"

连接应该是:

string query = "SELECT * " + 
               "FROM MYTABLE " +
               "WHERE 1=1 "

(看到每行末尾的空格吗?)

【讨论】:

@Archie:发布您的真实代码。您在构建查询时肯定遇到了问题。

以上是关于使用 Accounts.UUID 和 UUID = 时的 MySQL 语法问题,有两个表的主要内容,如果未能解决你的问题,请参考以下文章

nodejs中生成uuid

[PHP] ubuntu下使用uuid扩展获取uuid

Python生成UUID

为啥 CBPeripheral 标识符和 UUID 不同?

蓝牙Mesh简介设备标识:UUID和Mesh地址

如何选择主键uuid