ER_PARSE_ERROR: у вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MariaDB для правильного использования синтаксиса - PullRequest
1 голос
/ 25 марта 2020
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, но по какой-то причине он возвращает код ниже, когда все должно быть в порядке. Я проверил, и все в порядке с идентификатором и координатами, поэтому проблема должна быть, как указано, синтаксис.

[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 . Спасибо!

Ответы [ 3 ]

1 голос
/ 25 марта 2020

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

Мне кажется, он не проходит ID в values. Не следует, если для столбца id установлено значение auto_increment, вы даже не должны включать его в вставку.

Правильный синтаксис для вставки новой строки в таблицу, если столбец id auto_increment включено:

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

В противном случае, похоже, что это проблема, отличная от вашего запроса, поскольку получение значений 0 0 0 для столбцов x y z отсутствует для id - я надеюсь, что он по-прежнему отображается как @id, что недопустимо, поскольку столбец id. INT столбец.

0 голосов
/ 05 мая 2020

Я считаю, что проблема в том, что вы используете MySQL .Asyn c .fetchAll для запроса вставки вместо использования MySQL .Syn c .execute или MySQL .Asyn c .execute. , Попробуйте использовать MySQL .Syn c .execute, если вам не нужен обратный вызов.

0 голосов
/ 02 апреля 2020

position - это ключевое слово.

План A, Повсюду вокруг него отступать.

План B: Используйте другое имя для таблицы.

Ссылка: https://mariadb.com/kb/en/reserved-words/ Я не вижу его в списке ключевых слов MySQL.

Примечание: когда он говорит "рядом ...", он почти всегда указывает на или сразу после жетон-нарушитель.

...