Mysql

“Percona-XtraDB-Cluster 禁止對駐留在非事務性儲存引擎中的表(<範例>)使用 ALTER 命令”

  • April 19, 2021

我安裝了一個pxc_strict_mode設置為的 Percona XtraDB 集群ENFORCING,並嘗試從非 Galera MariaDB 伺服器導入數據庫。這適用於某些數據庫,通過轉儲它們並通過mysqldump --skip-locks -K導入它們mysql &lt;database&gt; &lt; &lt;dumpfile&gt;(在使用創建空白數據庫之後CREATE DATABASE)。然而,一個數據庫被拒絕導入:

第 40 行的錯誤 1105 (HY000):Percona-XtraDB-Cluster 禁止在 pxc_strict_mode = ENFORCING 或 MASTER 駐留在非事務儲存引擎(切換到事務引擎除外)中的表(example.example)上使用 ALTER 命令

大多數網際網路執行緒只是建議暫​​時禁用pxc_strict_mode. 然而,鑑於其他數據庫導入沒有任何問題,我認為該問題應該可以通過更改附加到的標誌mysqldump或修改轉儲文件中的語句來解決。我嘗試刪除轉儲中的所有 ALTER 語句,這會將上述錯誤更改為...prohibits the use of DML command....

源 MariaDB 實例和新的 XtraDB 集群都配置了預設的 InnoDB 儲存引擎。

將不勝感激任何輸入。

Cluster 只能正確處理 InnoDB 表。聽起來你的一些桌子有ENGINE=MyISAM

計劃 A:編輯轉儲文件以將每個表更改為 ENGINE=InnoDB。

計劃 B:刪除有問題的 ALTER;載入數據(假設表成功轉換為 InnoDB);然後手動執行失去的 ALTER。

計劃 C:ALTER TABLE t ENGINE=InnoDB;傾倒的每張桌子。

每個都有潛在的問題。一些在這裡列出:http: //mysql.rjweb.org/doc.php/myisam2innodb

引用自:https://dba.stackexchange.com/questions/290037