Mybatis-plus 官网的快速开始测试报错:expected "ARRAY, INVISIBLE, VISIBLE, NOT NULL, NULL, AS, DEFAULT, GENERATED..."

2023-02-21T18:20:25

mybatis-plus 快速开始

表结构如下:

DROP TABLE IF EXISTS user;

CREATE TABLE user
(
    id BIGINT(20) NOT NULL COMMENT '主键ID',
    name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
    age INT(11) NULL DEFAULT NULL COMMENT '年龄',
    email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
    PRIMARY KEY (id)
);

百度到解决方法:解决H2创建表的时候出现的expected “ARRAY, INVISIBL...问题

INT(11)只允许在MySQL和MariaDB兼容模式下使用,但H2是忽略指定精度的,也就是说不允许出现括号以及里面的限制。在H2 > > 2.0的所有其他兼容模式下,此定义都被拒绝,需要使用INT或INTEGER。

其次也不允许使用BOOLEAN(1),如果它在1.4.200中工作,那么它就是解析器中的一个错误。你需要使用BOOLEAN。

AUTO_INCREMENT子句通常也应该仅在MySQL和MariaDB兼容模式下使用,但它也可以在常规模式下使用。正确的子句是DEFAULT > AS IDENTITY生成的,并且主键和标识列不需要显式的NOT NULL约束,您可以删除它。约束通常也应该在所有其他子句之后指> > > 定,在H2实际接受标识选项之前不为NULL,但这种错误的子句顺序没有记录,也不受支持。

所以这里的 int 字段要去掉精度限制,变更后:

DROP TABLE IF EXISTS user;

CREATE TABLE user
(
    id BIGINT NOT NULL COMMENT '主键ID',
    name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
    age INT NULL DEFAULT NULL COMMENT '年龄',
    email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
    PRIMARY KEY (id)
);

至于说 user 表名不可用,为保留字段的,可以在原来的 datasource 里增加一个 url:

url: jdbc:h2:mem:testdb;NON_KEYWORDS=USER

这样就可以了。

当前页面是本站的「Baidu MIP」版。发表评论请点击:完整版 »