Я использую таблицу в PostGres для предоставления разрешения в веб-приложении SpringBoot, которое подключается к базе данных PostGres. Я хочу инициализировать эту таблицу с помощью элемента администрирования по умолчанию, если таблица пуста. Я делаю это внутри schema.sql файла Вот код, который я пытался до сих пор:Инициализация пустой таблицы с использованием schema.sql в Spring Boot
CREATE TABLE IF NOT EXISTS public.jdbcauth
(
username VARCHAR(32),
password VARCHAR(32) default NULL,
role VARCHAR(32) default NULL,
enabled INT default 0,
PRIMARY KEY(username)
);
IF EXISTS (SELECT 1 FROM public.jdbcauth) THEN
INSERT public.jdbcauth (username, password, role, enabled) values ('admin', 'admin', 'ADMIN', '1');
Это всегда терпит неудачу со следующей ошибкой:
Caused by: org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'dataSourceInitializer':
Invocation of init method failed; nested exception is org.springframework.jdbc.datasource.init.ScriptStatementFailedException:
Failed to execute SQL script statement #2 of resource URL
[file:/home/balajeerc/Projects/IGVDS_WebApp/src/main/resources/schema.sql]:
IF EXISTS (SELECT 1 FROM public.jdbcauth) THEN INSERT public.jdbcauth (username, password, role, enabled) values ('admin', 'admin', 'ADMIN', '1');
nested exception is org.postgresql.util.PSQLException:
ERROR: syntax error at or near "IF"
Что я делаю неправильно?
Заявление SQL скрипт, который по ошибке не то же самое как скрипт, который вы пытаетесь выполнить при инициализации. Ошибка должна исходить из другой части вашего веб-приложения. Проводка кода может помочь. –
@DavidH Извините, ошибка, которую я опубликовала, была тем, что я получал от попытки немного отличаться от кода SQL, который я разместил выше. Я обновил сообщение, чтобы показать фрагмент SQL, который я пытаюсь выполнить с ошибкой, соответствующей этому фрагменту. Сказав это, я уверен, что причиной ошибки являются только те две строки в файле schema.sql. Когда я прокомментирую это, ошибка исчезнет. Извините снова о путанице. – balajeerc