Как симулировать сбой базы данных в postgreSQL - PullRequest
0 голосов
/ 26 декабря 2018

Я новичок в postgresSQL, в моем курсе "Предварительная база данных" нам задают задачу имитировать сбой в заданном месте в postgres. У кого-нибудь есть идея, как сделать сбой?

BEGIN;
UPDATE actor SET first_name = 'penny' WHERE actor_id = 1;
-- CRASH
COMMIT;

Я тестировал деление на ноль, но он не вылетал и отображал только сообщение об ошибке!Я искал по всему интернету, но ничего не нашел, кто-нибудь знает, как это сделать?

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

Процесс может совершить самоубийство:

select pg_terminate_backend(pg_backend_pid());

FATAL:  terminating connection due to administrator command
server closed the connection unexpectedly
        This probably means the server terminated abnormally
        before or while processing the request.
0 голосов
/ 26 декабря 2018

Вы можете написать пользовательскую функцию в «C», которая сможет отправлять сигнал KILL.

Если это не требуется часто, вы можете просто вызвать pg_sleep с подходящей задержкой, а затем отправьте сигнал вручную (от имени пользователя root или пользователя postgres).

Обратите внимание, что это не совсем то, о чем обычно думают люди, симулируя сбой базы данных.Обычно вы отключаете питание, а не просто уничтожаете сам процесс postgres.Это проверяет весь путь через операционную систему и действительно проверяет данные, действительно корректно сохраняется на диске (или нет).Это намного больше работы, особенно с любой интересной (такой сложной, дорогой, медленной перезагрузкой) дисковой системой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...