在使用 SQLAlchemy 多次(无错误)插入 Aurora (PostgreSQL) RDS 无服务器集群后,我看不到 table。我的数据怎么了?

After numerous (error-free) inserts to Aurora (PostgreSQL) RDS serverless cluster with SQLAlchemy I can't see the table. What happened to my data?

更改某些 Terraform 代码后,我无法再访问已添加到 Aurora (PostgreSQL) 数据库中的数据。数据按预期添加到数据库中,日志中没有错误,但在使用 AWS RDS 查询编辑器连接到数据库后我找不到数据。

我已经使用 Python 代码添加了数千行,这些代码使用 SQLAlchemy/PostgreSQL 引擎对象从映射字典中插入一批行,如下所示:

if (count % batch_size) == 0:
    self.engine.execute(Building.__table__.insert(), mappings)
    self.session.commit()

此数据摄取的日志显示没有错误,所有提交似乎都已成功完成。所以数据被插入 某个地方 ,我只是不知道它在哪里,因为它没有显示在 AWS 控制台 RDS 查询编辑器中。我 运行 下面的 SQL 找到 table,返回零行:

SELECT * FROM information_schema.tables WHERE table_name = 'buildings'

这已经按预期工作了(即我可以通过查询编辑器查看 Aurora 数据库中的数据)所以我正在尝试找出最近修改的 Terraform 设置中的哪些导致了这个问题。

假设数据实际插入某处,我还能在哪里查找数据的插入位置?如果我能解决这个问题,它可能有助于揭露罪魁祸首。

我怀疑误导大写。喜欢"Buildings"。再次搜索:

SELECT * FROM information_schema.tables WHERE table_name ~* 'building';

或者:

SELECT * FROM pg_catalog.pg_tables WHERE tablename ~* 'building';

或者您的目标可能不是 table?您可以"write" 进行简单的查看。检查:

SELECT * FROM pg_catalog.pg_class WHERE  relname ~* 'building';

None 其中特定于 RDS。这在普通的 Postgres 中是一样的。

如果上次查询returns什么都没有,你进错数据库了。 (你知道一个数据库集群中可以有多个数据库吗?)或者你有严重的问题。

参见:

  • How to check if a table exists in a given schema
  • Are PostgreSQL column names case-sensitive?

在我记录了有关连接的更多信息后,我发现所使用的数据库名称不正确,因此我一直在使用错误的数据库名称查询 Aurora 实例。一旦我解决了这个问题并使用了正确的数据库名称,AWS RDS 查询编辑器中的 select 语句就会按预期工作。