2014-12-07 4 views
2

У меня есть следующий SQL Я бег в моем местном HSQLDB 2.3.2 База данных:HSQLDB Ошибка: неожиданный маркер: ВНЕШНЯЯ

CREATE TABLE IF NOT EXISTS countries (
    country_id    INTEGER GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1) NOT NULL PRIMARY KEY, 
    country_version   INTEGER NOT NULL, 
    country_name   NVARCHAR(100) NOT NULL, 
    country_label   NVARCHAR(100) NOT NULL, 
    country_description  NVARCHAR(500) NOT NULL 
    country_code   NVARCHAR(10) NOT NULL, 

    CONSTRAINT uc_countries UNIQUE (country_id, country_version, country_label, country_description, country_code) 
); 

CREATE TABLE IF NOT EXISTS states (
    state_id    INTEGER GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1) NOT NULL PRIMARY KEY, 
    state_version   INTEGER NOT NULL 
    state_name    NVARCHAR(100) NOT NULL, 
    state_label    NVARCHAR(100) NOT NULL, 
    state_description  NVARCHAR(500) NOT NULL, 
    country_id    INT NOT NULL, 

    FOREIGN KEY (country_id) REFERENCES countries(country_id), 
    CONSTRAINT uc_states UNIQUE (state_id, state_version, state_label, state_description, country_id) 
); 

Когда я запускаю это я получаю:

Error: unexpected token: FOREIGN 
SQLState: 42581 
ErrorCode: -5581 

Что такое здесь, и что я могу сделать, чтобы исправить это?

+1

Почему downvote без объяснений? Если это обман, пожалуйста, покажите мне вопрос об этом! В противном случае это [SSCCE] (http://sscce.org/), показывает усилия/исследования и содержит все, что нужно для диагностики/устранения неполадок. – IAmYourFaja

+1

Я не спустил вас вниз, но я думаю, что это хороший вопрос, поэтому я поддержал его. – april4181

+2

Вы все еще получаете эту ошибку, если вы выполняете каждое заявление отдельно? Это может быть связано с тем, как он соответствует. – april4181

ответ

1

Есть ли разница между INT NOT NULL и INTEGER NOT NULL? Потому что вы определили поля country_id обоими.

Кроме того, если вы вставляете SET REFERENTIAL_INTEGRITY FALSE; наверху, вы все еще получаете эту ошибку?

+1

Ughhhhh, я не могу поверить, как долго я смотрел на это и не замечал этого. 'INT' недействителен, он должен быть' INTEGER'. Баунти и принятый ответ вознаграждены! Благодаря! – IAmYourFaja

Смежные вопросы