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
Что не так?
  • Вопрос задан
  • 4677 просмотров
Пригласить эксперта
Ответы на вопрос 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
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы