LOAD DATA INFILE 和空间数据

LOAD DATA INFILE and spatial data

在 MySQL 5.7 上,我曾经用 LOAD DATA INFILESET 子句填充 table 的 "point" 列,即

LOAD DATA INFILE 'myfile.txt'
REPLACE INTO TABLE mytable
(@x, @y)
SET geom = Point(@x, @y);

这工作得很好。 我升级到 MySQL 8.0.12,现在出现错误 ERROR 1364 (HY000): Field 'geom' doesn't have a default value

LOAD DATA INFILE 处理 SET 子句的方式有什么变化吗? 谢谢!

此错误已在 8.0.12 中 confirmed。 我找到的唯一解决方法是:

  1. 删除 geom 列
  2. 将数据加载到 (x, y) 列
  3. 重新创建没有非空约束的 geom 列
  4. 更新 geom 列
  5. 更改列以添加非空约束

简单的方法是创建没有空间(point/geo)字段的table并将数据加载为文本,接下来从这个(临时)table加载数据到目标table 如下所示:

  1. 使用简单的列类型将数据加载到临时 table
  2. 从临时 table 插入目标 table 将所需列转换为空间列。