问题描述
在AWS上通过aurora Postgresql写入Postgres数据库时出现了一个奇怪的错误
Postgresql版本9.6.11
我试图解决表admin_user上的问题
Vacuum admin_user
Vacuum Freeze admin_user
我无法重新创建该表,因为它已连接到所有其他表,并且会造成大麻烦
更新问题
我无法访问表格
解决方法
由于我们可能无法理解的原因(可能是9.6.19修复的PostgreSQL软件错误,可能是硬件问题),您遭受了数据损坏。
由于您使用的是托管数据库,并且只能通过SQL访问数据库,因此您的选择受到限制。
最好是使用子事务从表中提取尽可能多的数据(在此示例中称为test
)
/* will receive salvaged rows */
CREATE TABLE test_copy (LIKE test);
您可以运行类似以下代码的内容:
DO
$$DECLARE
c CURSOR FOR SELECT * FROM test;
r test;
cnt bigint := 0;
BEGIN
OPEN c;
LOOP
cnt := cnt + 1;
/* block to start a subtransaction for each row */
BEGIN
FETCH c INTO r;
EXIT WHEN NOT FOUND;
EXCEPTION
WHEN OTHERS THEN
/* there was data corruption fetching the row */
RAISE WARNING 'skipped corrupt data at row number %',cnt;
NOVE c;
CONTINUE;
END;
/* row is good,salvage it */
INSERT INTO test_copy VALUES (r.*);
END LOOP;
END;$$;
祝你好运。