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

标签 postgresql sequelize.js amazon-rds dbeaver

问题

一个简单的 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/

相关文章:

ssl - 如何使用 SSL 将 Google Apps Script JDBC 连接到 Amazon RDS

java - 使用 Spring JDBC 的脚本初始化数据库失败

postgresql - Spring Docker 容器无法访问 Postgres Docker 容器

java - Postgresql 使用 java 带密码备份和恢复

node.js - Sequelize - 如何设置关联、保存实体并返回保存的实体和关联实体

node.js - 为什么我通过 App Engine 部署的应用无法连接到 Cloud SQL postgres 数据库?

javascript - 发送明确的错误消息作为响应

aws-lambda - RDS 代理 : Database menu is empty, 无法创建代理

sql - 如何解决PostgreSQL函数中 "column reference "id"is ambiguous"的问题?

oracle - 是否可以使用 SQL Developer 连接到 RDS Oracle 数据库实例?