Проблема
Простая таблица данных 2x2 объясняет мою проблему. Обе базы данных можно заставить работать, но они ведут себя по-разному, и мне нужно, чтобы они были одинаковыми.
PostreSQL Query | Local DB | Amazon-RDS |
--------------------------+------------+-----------------------------------------+
SELECT * from mydb.users; | Success | Success |
--------------------------+------------+-----------------------------------------+
SELECT * from users; | Success | ERROR: relation "users" does not exist |
---------------------------------------------------------------------------------+
Подробности
Базы данных должны быть идентичными. Amazon-RDS буквально pg_restore
'из pg_dump
локальной базы данных. Точные команды:
$ pg_dump --format=c ---no-privileges --no-owner --verbose \
--host=localhost --port=5432 --username=gary mydb;
$ pg_restore --no-owner --no-tablespaces --dbname=mydb --verbose \
--host=127.0.0.1 --port=47737 \ #ssh tunnel
--username=XXXXXX --format=c
- Проблема не в самом дампе данных. Я стер локальную базу данных, восстановил ее из дампа, и она по-прежнему ведет себя так, как и должно быть.
- Проблема не просто проявляется не только в моих необработанных запросах SQL, но и в значительном Node /Экспресс приложение, которое предполагается для фронт-энда базы данных. Он также генерирует запросы без префикса базы данных перед таблицами. Приложение использует Sequelize для ORM и уже много лет работает с MySQL на Amazon-RDS. Проблема, с которой я столкнулся сейчас, появилась только при переходе с MySQL на PostgreSQL.
- У меня нет опыта работы с Postgres.
- Не думаю, что это должно иметь значение, но в полном раскрытии я использую DBeaver для обработки всех моих соединений с базой данных, а также для выполнения дампа и восстановления базы данных.
Вопросы
- Почему одна база данных успешно выводит базу данных из имени одной таблицы, а другая не может?
- Есть ли где-нибудь параметр конфигурации, чтобы заставить их работать?
mydb
является единственной базой данных в экземпляре RDS.