ERROR 3105 (HY000): Unknown error 3105

事件:在导入rds上备份出来的文件时报错:ERROR 3105 (HY000): Unknown error 3105

1、使用mysql  <备份文件    的方式,直接中断,报错一样。

2、使用source执行时,表结构正常,导入数据为0。

 

 

分析:两台机器,一个机器上的开发环境正常,另一台上的测试环境报错。经比对两个机器的mysqldump版本不一样,

表结构中含有Cenerated ,geometry` geometry NOT NULL COMMENT '地理位置',
  `geohash` varchar(128) GENERATED ALWAYS AS (st_geohash(`geometry`,8)) VIRTUAL COMMENT 'geohash',
  `longitude` double(10,6) NOT NULL DEFAULT '0.000000' COMMENT '经度',
  `latitude` double(10,6) NOT NULL DEFAULT '0.000000' COMMENT '纬度',

 

 

具体原因:导出的mysqldump版本太低,有问题的版本

[root@test ~]# mysqldump --version
mysqldump  Ver 10.14 Distrib 5.5.68-MariaDB, for Linux (x86_64)

 

 正常的版本

 

[root@mysql ~]# mysqldump --version
mysqldump  Ver 10.13 Distrib 5.7.26, for linux-glibc2.12 (x86_64)

 

 

 

google搜索描述的故障相同,其中一段话直接说明了问题原因如下:

if you have generated columns you need to use the version of mysqldump from MySQL 5.7.9 or higher, because earlier versions have a bug.

也就是说 mysqldump 导出带有 generated columns的数据,要使用 mysqldump 5.7.9 以上的版本,否则会遇到 ERROR 3105 (HY000) 这个问题。

 

总结:

Generated ColumnMySQL 5.7 引入的新特性,所谓 Cenerated Column,就是数据库中这一列由其他列计算而得。

MySQL 5.7中,支持两种Generated Column,即Virtual Generated ColumnStored Generated Column

前者只将Generated Column保存在数据字典中(表的元数据),并不会将这一列数据持久化到磁盘上;后者会将Generated Column持久化到磁盘上,而不是每次读取的时候计算所得。

 

 

 

 

 

 

 

 

 

 

参考:http://zongming.net/read-1384/

posted @ 2022-02-18 10:16  da0h1  阅读(599)  评论(0编辑  收藏  举报