[postgresql] relation «n» does not exist

Вообщем, частенько сталкиваясь с таким сообщением, и потом гуглением по этому поводу. Поэтому, решил накидать пару строчек, почему такое сообщение вылазит и как с ним бороться.

Причина: основная причина — это недостаточно прав для совершения какой-либо операции (connect, select, insert, update,…)

Решение: дать соответствующие права.

Подвох: просто так дать права не получится, если вы уже внесли данные, которые принадлежат другому юзеру. Например, есть БД db1 и владелец её user1. Но если вы создали в этой БД таблицу или схему от другого юзера, то будут проблемы. Такой же эффект (в плане проблемы) возникает, если делать restore из dump’a таким образом:

$psql db1 < dump.sql

в этот случае (мы сейчас находимся под юзером pgsql (юзер, от которого запущен серверpostgresql)) владельцем новых данных станет юзер pgsql. Для того, что бы такого не произошло, нужно правильно делать restore (следить за правами):

$psql db1 -U user1 < dump.sql

после этого всё будет в норме. Не забывайте, про это, это вам не mysql!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *