Hsql дает исключение, выполняющее этот оператор

Julia спросил: 12 мая 2018 в 04:07 в: sql

Я пытаюсь запустить мой интеграционный тест для своего пакетного приложения Spring Cloud Task, используя в памяти hsql db, и он дает мне следующую ошибку, выполняющую эту инструкцию db. Этот оператор отлично работает в sqlserver db. Есть ли какое-то синтаксическое изменение, которое мне нужно сделать? Спасибо!

Создать Создать запрос

CREATE TABLE TASK_SEQ (
    ID BIGINT NOT NULL,
    UNIQUE_KEY CHAR(1) NOT NULL,
    constraint UNIQUE_KEY_UN unique (UNIQUE_KEY)
);

Вставить запрос

INSERT INTO TASK_SEQ (ID, UNIQUE_KEY) select * from (select 0 as ID, '0' as UNIQUE_KEY) as tmp;

Ошибка Stacktrace

Caused by:org.springframework.jdbc.datasource.init.ScriptStatementFailedException:
  Failed to execute SQL script statement #1 of class path resource
  [schema-DML.sql]: INSERT INTO TASK_SEQ (ID, UNIQUE_KEY) select * from
  (select 0 as ID, '0' as UNIQUE_KEY) as tmp; nested exception is
  java.sql.SQLSyntaxErrorException: unexpected token: )     at
  org.springframework.jdbc.datasource.init.ScriptUtils.executeSqlScript(ScriptUtils.java:491)

1 ответ

fredt ответил: 12 мая 2018 в 12:22

Вам нужно включить совместимость SQL Server в HSQLDB. См. Руководство:

http://hsqldb.org/doc/2.0/guide/compatibility-chapt.html#coc_compatibility_mssql

Ваше заявление выглядит излишне сложным. Что-то вроде ниже должно работать в большинстве баз данных.

INSERT INTO TASK_SEQ (ID, UNIQUE_KEY) VALUES (0, '0')