gpt4 book ai didi

postgresql - 为什么将本地 Postgres 恢复到 AWS RDS 后 SQL 语法发生变化?

转载 作者:行者123 更新时间:2023-11-29 14:25:37 25 4
gpt4 key购买 nike

问题

一个简单的 2x2 数据表解释了我的问题。两个数据库都可以工作,但它们的行为不同,我需要它们相同。

 PostreSQL Query           |  Local DB  |  Amazon-RDS                             | --------------------------+------------+-----------------------------------------+ SELECT * from mydb.users; |  Success   |  Success                                | --------------------------+------------+-----------------------------------------+ SELECT * from users;      |  Success   |  ERROR: relation "users" does not exist | ---------------------------------------------------------------------------------+

Details

  1. The databases should be identical. Amazon-RDS is literally pg_restore'd from a pg_dump of the local database. Exact commands:

    $ 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
  2. 问题不在于数据转储本身。我已经删除本地数据库,从转储中恢复它,它仍然按预期运行。
  3. 问题不仅体现在我的原始 SQL 查询上,还有一个相当大的 Node/Express 应用程序应该作为数据库的前端。它也会生成表前没有数据库前缀的查询。该应用程序将 Sequelize 用于 ORM,并已在 Amazon-RDS 上与 MySQL 一起运行生产多年。我现在看到的问题只是在从 MySQL 迁移到 PostgreSQL 时出现的。
  4. 我没有使用 Postgres 的经验。
  5. 我认为这无关紧要,但坦白说,我正在使用 DBeaver 处理我所有的数据库连接,并进行数据库转储和恢复。

问题

  1. 为什么一个数据库仅从表名就可以成功推断出数据库,而另一个却不能?
  2. 是否有配置设置可以让它们同时工作? mydb是RDS实例中唯一的数据库。

最佳答案

mydb 不是数据库,它是模式。而且它似乎不是 in the schema search_path在 RDS 上。

它可以在集群设置、数据库设置、(登录)用户设置或本地 DBeaver 连接上进行配置。

关于postgresql - 为什么将本地 Postgres 恢复到 AWS RDS 后 SQL 语法发生变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58360022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com