PostgreSQL说:还没有创建MultiXactId 1085002-明显的环绕

问题描述

在AWS上通过aurora Postgresql写入Postgres数据库时出现了一个奇怪的错误

Postgresql版本9.6.11

我试图解决表admin_user上的问题

 Vacuum admin_user 
 Vacuum Freeze admin_user

我无法重新创建该表,因为它已连接到所有其他表,并且会造成大麻烦

更新问题

我无法访问表格

enter image description here

解决方法

由于我们可能无法理解的原因(可能是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;$$;

祝你好运。