Задать вопрос
Alexandre888
@Alexandre888
Javascript-разработчик

Что не так с запросом, ошибка: «error: syntax error at end of input»?

Есть запрос для MySQL:
SELECT * FROM users WHERE user_id = ?
При попытке запустить его в pg возникает ошибка
error: syntax error at end of input
Что не так?
  • Вопрос задан
  • 6301 просмотр
Подписаться Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 1
@andrewpilikin
В синтаксисе ошибка, например имя таблицы может содержать пробел, или строка может иметь символ который неправильно интерпретируется.
Для примера операция Дэлит:
Такой синтакисис не работает, тут понятно, когда вставляешь запрос в средство работы с БД, кути генерирует ту же ошибку:
const QString request="DELETE FROM \"" + tableName + "\" WHERE name=\""+rowName+"\";";

Такой синтаксис работает:
const QString request="DELETE FROM \"" + tableName + "\"" +
            " WHERE name=\'"+ rowName +"\'";

И пример с инсертом:
Не работает:
const QString request="INSERT INTO \"" + tableName +"\" ( name ) VALUES ( "+ rowName + " );";

Вроде бы должен работать, скопировав в DataGrid все выполняется:
const QString request="INSERT INTO \"" + tableName+ "\" (name) "+
    "VALUES ('"+ rowName+ "');  ";

И снова нет.
Вот рабочий вариант:
const QString request="INSERT INTO \""+ tableName+"\""+
            " ( name ) VALUES (?)";
    query.prepare(request);
    query.bindValue(0, rowName);

Порой не угадаешь почему запрос не работает. Аналогичный, один в один, скопированный в pgAdmin или Датагрид выполняется на ура. Именно поэтому вместо чистого sql запроса лучше использовать ORM
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы