После многочисленных (безошибочных) вставок в безсерверный кластер Aurora (PostgreSQL) RDS с SQLAlchemy я не вижу таблицу. Что случилось с моими данными? - PullRequest
0 голосов
/ 28 мая 2020

После изменения некоторого кода Terraform я больше не могу получить доступ к данным, которые я добавил в базу данных Aurora (PostgreSQL). Данные добавляются в базу данных, как и ожидалось, без ошибок в журналах, но я не могу найти данные после подключения к базе данных с помощью AWS RDS Query Editor.

Я добавил тысячи строк с Python код, который использует объект механизма SQLAlchemy / PostgreSQL для вставки пакета строк из словаря сопоставлений, например:

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

В журналах этого приема данных ошибок нет, все коммиты выглядят так: успешно завершены. Итак, данные были вставлены где-то , я просто не могу понять, где это, так как они не отображаются в AWS Console RDS Query Editor. Я запускаю SQL ниже, чтобы найти таблицу с возвращенными нулевыми строками:

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

Раньше это работало, как и ожидалось (т.е. я мог видеть данные в базе данных Aurora через редактор запросов), поэтому я Я пытаюсь выяснить, какие из недавно измененных настроек Terraform вызвали проблему.

Где еще я могу посмотреть, где были вставлены данные, если предположить, что они действительно были куда-то вставлены? Если я смогу с этим разобраться, это поможет выявить виновника.

Ответы [ 2 ]

1 голос
/ 28 мая 2020

Я подозреваю, что использование заглавных букв вводит в заблуждение. Как "Buildings". Выполните поиск снова с помощью:

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

Или:

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

Или, может быть, ваша цель не была таблицей? Вы можете «писать» в простые представления. Проверьте с помощью:

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

Ничего из этого не указано c для RDS. То же самое и с обычным Postgres.

Если последний запрос ничего не вернул, значит, вы попали в неправильную базу данных. (Вы знаете, что в одном кластере БД может быть несколько баз данных?) Или у вас серьезная проблема.

См .:

0 голосов
/ 28 мая 2020

Как только я зарегистрировал дополнительную информацию о соединении, я обнаружил, что имя используемой базы данных неверно, поэтому я запрашивал экземпляр Aurora, используя неправильное имя базы данных. Как только я решил это и использовал правильное имя базы данных, операторы выбора в AWS редакторе запросов RDS работали, как ожидалось.

...