Я пытаюсь запустить этот запрос, чтобы вставить новую строку в таблицу пользователей из моего кода C помощью PQexec() (libpq)связи МЭ не существует ошибку, только с libpq
INSERT INTO Users
VALUES ((
SELECT MIN(s.id)
FROM generate_series(1,(
SELECT GREATEST(MAX(Id) + 1,1) FROM Users
)) AS s(id)
WHERE NOT EXISTS (SELECT 1 FROM Users WHERE Id = s.id))
, 'Tester', 27)
RETURNING Id;
Он выполняет то, что мне нужно когда я запустить его в Psql терминале, но из C возвращает
Error executing query: ERROR: relation "users" does not exist
Я проверил состояние соединения и ей это удалось, используя один и тот же пользователь я подключиться из терминала. Почему он не может найти таблицу пользователей?
EDIT: добавление C-код Подключение:
sprintf(connect_param,"host=address dbname=%s user=%s password=%s",
USERNAME, USERNAME, PASSWORD);
conn = PQconnectdb(connect_param);
Запрос:
sprintf(cmd, "INSERT INTO Users "
"VALUES (("
"SELECT MIN(s.id) "
"FROM generate_series(1,("
"SELECT GREATEST(MAX(Id) + 1,1) FROM Users "
")) AS s(id) "
"WHERE NOT EXISTS (SELECT 1 FROM Users WHERE Id = s.id)) "
" , \'%s\', %d) "
"RETURNING Id;", Name, Age);
res = PQexec(conn,cmd);
можете ли вы разместить свой фактический код C, а не просто запрос –
Правильность настроек подключения? Вы использовали 'USERNAME' дважды в коде, который вы отправили, один раз для' dbname =% s' и один раз для 'user =% s'. –
@IanAbbott да, они такие же. –