Mysqldump
如何將 mysqldump 與 Generated 列一起使用?
導入轉儲時出現以下錯誤,
第 82 行的錯誤 3105 (HY000):不允許為表 ’table_name’ 中生成的列 ‘column_name’ 指定值。
當我描述有錯誤的表時,其中有一些生成的列。
選項類型 | varchar(45) | 是 | 穆爾 | 空 | 虛擬生成
為數據庫包含生成的列進行 mysql 轉儲時使用的正確命令是什麼?
MySQL 伺服器源和目標版本:
mysqld Ver 5.7.26 for Linux on x86_64 (MySQL Community Server (GPL))
MariaDB mysqldump CLI 版本:
mysqldump Ver 10.17 Distrib 10.3.12-MariaDB,適用於 Linux (x86_64)
在將 MariaDB 中的 mysqldump 與虛擬生成列一起使用時,這是一個問題。MariaDB 的 mysqldump 顯然會轉儲生成的值,但 MySQL 只接受
DEFAULT
作為虛擬生成列的值。似乎您需要使用 MySQL 的 mysqldump 來正確轉儲和恢復 MySQL 伺服器上的虛擬生成列。
此處也報告了該錯誤。
我做的一種解決方法是替換轉儲中的虛擬列:
sed -i 's/GENERATED ALWAYS AS .* VIRTUAL/NOT NULL/' mydump.sql
然後恢復轉儲,然後再次刪除/添加生成的列:
mysql -e "ALTER TABLE foo DROP COLUMN bar;\ ALTER TABLE foo ADD COLUMN bar VARCHAR(255) AS ...;"