【发布时间】:2017-10-13 17:59:29
【问题描述】:
以下是 H2DB 查询
INSERT INTO userpermission (userid, permissionid, createddt, createdby, updateddt, updatedby)
SELECT u.userid, p.permissionid, now(), ("1"), now(), ("1") FROM user u, permission p
WHERE u.email = "csr_admin@example.com";
我想要实现的是在用户表中为用户表中具有给定电子邮件地址的用户插入一条记录,对于权限表中的每个权限。
以下是错误
Reason: liquibase.exception.DatabaseException: Column "1" not found; SQL statement:
INSERT INTO userpermission (userid, permissionid, createddt, createdby, updateddt, updatedby)
SELECT u.userid, p.permissionid, now(), ("1"), now(), ("1") FROM user u, permission p
WHERE u.email = "csr_admin@example.com" [42122-193] [Failed SQL: INSERT INTO userpermission (userid, permissionid, createddt, createdby, updateddt, updatedby)
SELECT u.userid, p.permissionid, now(), ("1"), now(), ("1") FROM user u, permission p
WHERE u.email = "csr_admin@example.com"]
相同的查询在 MySQL 中运行。
【问题讨论】:
-
不确定 H2,但在所有 RDMS 中,常量都用单引号声明。大括号也是不必要的。将
("1")替换为'1'。 -
是的,我在添加大括号之前尝试过。不工作。
-
也将双引号替换为单引号。只需先运行 select 语句。此外,您正在通过不提供连接条件进行交叉连接。这是故意的吗?
-
你是对的。我不得不用单引号替换 where 子句。 MySQL会接受它,但不会接受H2。谢谢!
-
乐于助人。我也将评论作为答案。接受它,这样问题就可以结束了。谢谢!