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 ответа
Как уже упоминалось в комментариях,
- Используйте одинарные кавычки для констант
- Не используйте фигурные скобки с константами в предложении select.
- Проверьте условие соединения. Не сопоставляя 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
работает, вот почему