在AIO期间执行cmn-data-svc-ddl-dml-mysql-2.2-sql时出错

时间:2019-05-13 14:35:23

标签: acumos

运行脚本acumos_k8s_prep.sh在数据库初始化期间引发错误:

+ sedi '1s/^/use acumos_cds;\n/' cmn-data-svc-ddl-dml-mysql-2.2.sql
+ sed --version
+ sed -i -- '1s/^/use acumos_cds;\n/' cmn-data-svc-ddl-dml-mysql-2.2.sql
+ mysql -h 172.16.83.xxx -P 30001 --user=xxx --password=xxx
ERROR 1364 (HY000) at line 587: Field 'MODIFIED_DATE' doesn't have a default value
++ fail
++ set +x

在587行中插入了一个条目

INSERT INTO C_ROLE (ROLE_ID, NAME, ACTIVE_YN, CREATED_DATE) VALUES ('12345678-abcd-90ab-cdef-1234567890ab', 'MLP System User', 'Y', CURRENT_TIMESTAMP());

进入表C_ROLE

CREATE TABLE C_ROLE (
  ROLE_ID CHAR(36) NOT NULL PRIMARY KEY,
  NAME VARCHAR(100) NOT NULL,
  ACTIVE_YN CHAR(1) DEFAULT 'Y' NOT NULL,
  CREATED_DATE TIMESTAMP NOT NULL DEFAULT 0,
  MODIFIED_DATE TIMESTAMP NOT NULL,
  UNIQUE INDEX C_ROLE_C_NAME (NAME)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

对于MODIFIED_DATE确实没有默认值。

1 个答案:

答案 0 :(得分:0)

这可能是由于MariaDB版本10.2+泊坞窗映像的更改所致,可能对SQL模式设置了严格。我的数据库没有显示此失败,它具有以下配置:

function monthDiff(date1, date2) {
    var months;
    months = (date2.getFullYear() - date1.getFullYear()) * 12;
    months -= date1.getMonth() + 1;
    months += date2.getMonth();
    return months <= 0 ? 0 : months;
}

我向DML脚本提交了补丁,因此它为每个MODIFIED_DATE列提供NOW()。合并后,您可以直接从https://gerrit.acumos.org获取最新脚本,也可以等待对A.I.O​​的更新。

HTH