postgresql golang создать ошибку таблицы, pq: синтаксическая ошибка в или около "$ 1" - PullRequest
0 голосов
/ 28 июня 2018

Привет, я не понимаю, что я делаю здесь не так.

_, err = db.Exec("CREATE TABLE $1", "books")
if err != nil {
    log.Fatal(err)
}

Я не вижу, что здесь синтаксически неправильно.

Я также сделал:

_, err = db.Exec("CREATE TABLE books")
if err != nil {
    log.Fatal(err)
}

Также выдает синтаксическую ошибку

1 Ответ

0 голосов
/ 28 июня 2018

Идентификаторы нельзя использовать в качестве заполнителей. Только значения могут быть использованы там. (это не ограничение Go или его драйверов БД, такое ограничение есть у самих реляционных баз данных).

В случае жестко закодированных идентификаторов - используйте точный запрос

CREATE TABLE books

В случае динамических заполнителей - убедитесь, что вы используете белые списки допустимых значений.

UPD

Только этот запрос

CREATE TABLE books

недопустимо, поскольку в нем отсутствуют определения столбцов. В таблице должен быть хотя бы один столбец.

недействительно, потому что в нем отсутствуют круглые скобки:

CREATE TABLE books()

, в котором вы определяете столбцы.

TIL: у вас может быть таблица с нулевыми столбцами в postgresql.

Ссылки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...