1

以下是 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 中工作。

4

2 回答 2

2

正如评论中提到的,

  1. 对字符串常量使用单引号。
  2. 不要在 select 子句中使用带有常量的大括号。
  3. 检查加入条件。如果没有基于公共列匹配 2 个表,您正在做一个笛卡尔积
于 2017-05-15T03:51:34.313 回答
0

我遇到了类似的问题。当我的 springboot 应用程序首次运行时,我想在我的 H2 中插入一些默认值。我的 schema.sql 和 data.sql 都是正确的。

但是,当我这样做时,它仍然不会将示例数据加载到 H2 Schema 表中select *。环顾了一个小时后。我决定查看application.properties文件。我变了

spring.jpa.hibernate.ddl-auto=create-drop

spring.jpa.hibernate.ddl-auto=none

或者spring.jpa.hibernate.ddl-auto=update

他们都工作。万一你想知道为什么两者都none有效update,这就是为什么

于 2021-09-03T19:54:09.337 回答