INSERT INTO таблица SELECT не работает с постоянными значениями в H2 DB

Ниже приводится запрос 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";

То, чего я пытаюсь добиться, - это вставить запись в userpermission для пользователя с данным адресом электронной почты в таблице user, для каждого разрешения в таблице полномочий.

Ниже приводится ошибка

 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.

2 ответа

Решение

Как уже упоминалось в комментариях,

  1. Используйте одинарные кавычки для констант
  2. Не используйте фигурные скобки с константами в предложении select.
  3. Проверьте условие соединения. Не сопоставляя 2 таблицы на основе общего столбца, вы делаете декартово произведение

Я столкнулся с подобной проблемой. Я хочу вставить какое-то значение по умолчанию в свой H2 при первом запуске приложения Springboot. У меня были правильные schema.sql и data.sql.

Однако он по-прежнему не загружает образцы данных в таблицу схемы H2, когда я select *. осмотревшись в течение часа. Я решил заглянуть в application.propertiesфайл. я изменил

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

к spring.jpa.hibernate.ddl-auto=none

или spring.jpa.hibernate.ddl-auto=update

оба они работают. на всякий случай вам интересно, почему оба none а также updateработает, вот почему

Другие вопросы по тегам