Mybatis-plus 官网的快速开始测试报错:expected "ARRAY, INVISIBLE, VISIBLE, NOT NULL, NULL, AS, DEFAULT, GENERATED..."
表结构如下:
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
这样就可以了。