0

我有 Mysql DB,其中包含带有字段的表“关税”

start_date DATETIME DEFAULT (current_timestamp() + interval 10 year),

当我尝试使用 pgloader 将数据库迁移到 postgreSQL 时出现错误

错误数据库错误0A000:不再支持日期时间的值“当前”查询:CRE ATE TABLE yamalkernel.tariff 2021-10-06T09:51:25.248000+03:00 FATAL 无法创建架构,见上文

我以这种方式运行 pgloader

$ pgloader 场景.load

$ cat 场景.load

LOAD DATABASE
FROM mysql://user:password@127.0.0.1/database1
INTO postgresql://postgres:postgres@127.0.0.1:5432/database2;
4

2 回答 2

1

您可以“告诉” pgLoader 转换“ ”表(在“ ”部分中)的问题字段(“ start_date”),例如如下:tariffCAST

#!/bin/bash

cat <<EOF > file.load
LOAD DATABASE
FROM mysql://user:password@127.0.0.1/database1
INTO postgresql://postgres:postgres@127.0.0.1:5432/database2
CAST column tariff.start_date to "timestamptz DEFAULT now() + interval '10 year'" drop default;
EOF

pgloader -v file.load
于 2021-10-06T17:08:05.730 回答
0

该代码中有几个错误:

  • 使用timestamp而不是datetime
  • 使用current_timestamp而不是current_timestamp()
  • 间隔值需要用单引号括起来

所以你需要使用:

start_date timestamp DEFAULT current_timestamp + interval '10 year'
于 2021-10-06T09:22:15.603 回答