kar*_*yan 5 mysqldump mysql-5.7 mariadb-10.3
我在导入转储时遇到以下错误,
第 82 行出现错误 3105 (HY000):不允许为表“table_name”中的生成列“column_name”指定值。
当我描述错误的表时,其中有一些生成的列。
选项类型 | varchar(45) | varchar(45) | 是的 | 乘法 | 空| 虚拟生成
为数据库包含生成的列进行 mysql 转储时使用的正确命令是什么?
MySQL服务器源和目标版本:
mysqld 版本 5.7.26,适用于 x86_64 上的 Linux(MySQL 社区服务器 (GPL))
MariaDB mysqldump CLI 版本:
mysqldump 版本 10.17 Distrib 10.3.12-MariaDB,适用于 Linux (x86_64)
Dar*_*idl 17
当使用来自 MariaDB 的 mysqldump 和虚拟生成的列时,这是一个问题。MariaDB 的 mysqldump 显然会转储生成的值,但 MySQL 只接受DEFAULT
虚拟生成列的值。
看来您需要使用 MySQL 的 mysqldump 来正确转储和恢复 MySQL 服务器上的虚拟生成列。
该错误也被报告在这里。
我所做的解决方法是替换转储中的虚拟列:
sed -i 's/GENERATED ALWAYS AS .* VIRTUAL/NOT NULL/' mydump.sql
Run Code Online (Sandbox Code Playgroud)
然后恢复转储,然后再次删除/添加生成的列:
mysql -e "ALTER TABLE foo DROP COLUMN bar;\
ALTER TABLE foo ADD COLUMN bar VARCHAR(255) AS ...;"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11159 次 |
最近记录: |