"Неверный синтаксис рядом с 'DESCRIBE'. [41,1]" Нет другого контекста, не могу найти синтаксическую ошибку - PullRequest
0 голосов
/ 30 апреля 2020

Новичок в SQL, не могу понять, что не так в моем коде. все, что он говорит, это:

Неверный синтаксис рядом с 'DESCRIBE'. [41,1]

Я пытался снять точку с запятой. Я просто не знаю, чего он хочет от меня.

Вот мой код. Все помогает, спасибо!

-- Write the query to create the 4 tables below.
CREATE TABLE client (
    id          INT                 NOT NULL    IDENTITY(1,1),
    first_name  VARCHAR(255)        NOT NULL,
    last_name   VARCHAR(255)        NOT NULL,
    dob         DATE                NOT NULL,
    PRIMARY KEY (id),
    CONSTRAINT (full_name)  UNIQUE (first_name, last_name)
);

CREATE TABLE employee (
    id          INT             NOT NULL    IDENTITY(1,1),
    first_name  VARCHAR(255)    NOT NULL,
    last_name   VARCHAR(255)    NOT NULL,
    dob         DATE            NOT NULL,
    date_joined DATE            NOT NULL,
    CONSTRAINT (full_name) UNIQUE (first_name, last_name),
    PRIMARY KEY (id)
);

CREATE TABLE project (
    id          INT             NOT NULL    IDENTITY(1,1),
    cid         INT             NOT NULL,
    name        VARCHAR(255)    NOT NULL,
    notes       TEXT,
    UNIQUE (name), 
    FOREIGN KEY (cid) REFERENCES client(id)
);

CREATE TABLE works_on (
    eid         INT             NOT NULL,
    pid         INT             NOT NULL,
    start_date  DATE            NOT NULL,
    PRIMARY KEY (eid, pid),
    FOREIGN KEY (eid) REFERENCES employee(id),
    FOREIGN KEY (pid) REFERENCES project(id)
);

-- Leave the queries below untouched. These are to test your submission correctly.
-- Test that the tables were created
DESCRIBE client;
DESCRIBE employee;
DESCRIBE project;
DESCRIBE works_on;

-- Test that the correct foreign keys were created 
SELECT TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME,REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME 
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE 
WHERE REFERENCED_TABLE_SCHEMA = 'grade';

1 Ответ

1 голос
/ 30 апреля 2020

Для MariaDB (и MySQL) правильный синтаксис для IDENTITY(1,1), - AUTO_INCREMENT, а имена CONSTRAINT не заключены в (). Любой столбец, определенный как AUTO_INCREMENT, также должен быть объявлен как PRIMARY KEY (это проблема только с таблицей project). Таким образом, ваши CREATE TABLE команды должны выглядеть следующим образом:

CREATE TABLE client (
    id          INT                 NOT NULL    AUTO_INCREMENT,
    first_name  VARCHAR(255)        NOT NULL,
    last_name   VARCHAR(255)        NOT NULL,
    dob         DATE                NOT NULL,
    PRIMARY KEY (id),
    CONSTRAINT full_name  UNIQUE (first_name, last_name)
);

CREATE TABLE employee (
    id          INT             NOT NULL    AUTO_INCREMENT,
    first_name  VARCHAR(255)    NOT NULL,
    last_name   VARCHAR(255)    NOT NULL,
    dob         DATE            NOT NULL,
    date_joined DATE            NOT NULL,
    CONSTRAINT full_name UNIQUE (first_name, last_name),
    PRIMARY KEY (id)
);

CREATE TABLE project (
    id          INT             NOT NULL    AUTO_INCREMENT,
    cid         INT             NOT NULL,
    name        VARCHAR(255)    NOT NULL,
    notes       TEXT,
    PRIMARY KEY (id),
    UNIQUE (name), 
    FOREIGN KEY (cid) REFERENCES client(id)
);

CREATE TABLE works_on (
    eid         INT             NOT NULL,
    pid         INT             NOT NULL,
    start_date  DATE            NOT NULL,
    PRIMARY KEY (eid, pid),
    FOREIGN KEY (eid) REFERENCES employee(id),
    FOREIGN KEY (pid) REFERENCES project(id)
);

Демонстрация на dbfiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...