1
MySQL.Async.fetchAll('INSERT INTO position (id, x, y, z) VALUES (@id, @x, @y, @z)', 
{['@id'] = identifier, ['@x'] = coords.x, ['@y'] = coords.z, ['@z'] = coords.z})

你好。我正在学习编程,我已经为我的 FiveM 服务器编写了上面的简单命令,但由于某种原因,它返回了下面的代码,当它应该没问题的时候。我已经检查过,id 和 coords 一切正常,所以问题一定是语法。

[MySQL] [testeServerClient] An error happens on MySQL for query "INSERT INTO position (id, x, y, z) VALUES (@id, 0, 0, 0)": ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'position (id, x, y, z) VALUES (@id, 0, 0, 0)' at line 1

有谁知道如何修理它?我的 MariaDB 版本是10.4.11-MariaDB。谢谢!

4

3 回答 3

0

我认为问题在于您使用 MySQL.Async.fetchAll 进行插入查询,而不是使用 MySQL.Sync.execute 或 MySQL.Async.execute。除非您需要回调,否则请尝试使用 MySQL.Sync.execute。

于 2020-05-05T06:55:27.110 回答
0

position是一个关键字。

计划A,到处都在它周围。

计划 B:为表使用不同的名称。

参考: https ://mariadb.com/kb/en/reserved-words/ 我在 MySQL 的关键字列表中没有看到它。

注意:当它说“near ...”时,它几乎总是指向或紧跟在违规标记之后。

于 2020-04-02T01:09:37.573 回答
0

the right syntax to use near 'position (id, x, y, z) VALUES (@id, 0, 0, 0)' at line 1

在我看来,它没有通过IDin values。如果该id列设置为auto_increment您也不应该将其包含在您的插入中。

id如果列已auto_increment打开,则在表中插入新行的正确语法是:

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

否则,除了您的查询之外,这似乎是一个问题,因为它为没有值0 0 0的列获取值- 它仍然显示为无效,因为该列是无效的,我希望。一个专栏。x y zid@ididINT

于 2020-03-25T17:41:57.753 回答