2015-08-16 7 views
1

все! Я новичок в MySQL. Я создал новую модель с инструментами Workbench (я имею в виду, что я не написал ни одной строки кода самостоятельно). При попытке переслать инженер это я получаю:Ошибка MySQL Workbench 1064

Executing SQL script in server 
ERROR: Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'COMMENT '') 
ENGINE = InnoDB' at line 8 
SQL Code: 
    -- ----------------------------------------------------- 
    -- Table `university`.`CITY` 
    -- ----------------------------------------------------- 
    CREATE TABLE IF NOT EXISTS `university`.`CITY` (
     `ID_CITY` INT NOT NULL COMMENT '', 
     `CNAME` TEXT(15) NULL COMMENT '', 
     `POPULATION` INT NULL COMMENT '', 
     PRIMARY KEY (`ID_CITY`) COMMENT '') 
    ENGINE = InnoDB 

SQL script execution finished: statements: 5 succeeded, 1 failed 

Fetching back view definitions in final form. 
Nothing to fetch 

Кроме того, при попытке передать инженера модель Workbench по умолчанию «sakila_full» я получаю то же самое:

Executing SQL script in server 
ERROR: Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'COMMENT '', 
INDEX `idx_actor_last_name` (`last_name` ASC) COMMENT '') 
ENGINE ' at line 9 
SQL Code: 
    -- ----------------------------------------------------- 
    -- Table `sakila`.`actor` 
    -- ----------------------------------------------------- 
    CREATE TABLE IF NOT EXISTS `sakila`.`actor` (
     `actor_id` SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '', 
     `first_name` VARCHAR(45) NOT NULL COMMENT '', 
     `last_name` VARCHAR(45) NOT NULL COMMENT '', 
     `last_update` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '', 
     PRIMARY KEY (`actor_id`) COMMENT '', 
     INDEX `idx_actor_last_name` (`last_name` ASC) COMMENT '') 
    ENGINE = InnoDB 
    DEFAULT CHARACTER SET = utf8 

SQL script execution finished: statements: 5 succeeded, 1 failed 

Fetching back view definitions in final form. 
Could not get definition for sakila.customer_list from server 
Could not get definition for sakila.film_list from server 
Could not get definition for sakila.nicer_but_slower_film_list from server 
Could not get definition for sakila.staff_list from server 
Could not get definition for sakila.sales_by_store from server 
Could not get definition for sakila.sales_by_film_category from server 
Could not get definition for sakila.actor_info from server 
7 views were read back. 

Заранее спасибо!

+0

ошибка может также возникнуть, когда вы определили SET/ENUM и havent заселили ее – Manny265

ответ

1

Похоже, вы взяли строки COMMENT слишком далеко. Согласно the MySQL CREATE TABLE syntax, атрибут COMMENT разрешен только для определения столбца. Это означает, что это неверно в определениях INDEX или PRIMARY KEY, которые вы указали в конце своих операторов CREATE.

COMMENT '' не являются обязательными и могут быть опущены полностью, тем более, что вы оставляете их пустыми. В противном случае они будут использоваться для получения немного полезных для чтения метаданных в определениях столбцов.

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

CREATE TABLE IF NOT EXISTS `university`.`CITY` (
    `ID_CITY` INT NOT NULL COMMENT '', 
    `CNAME` TEXT(15) NULL COMMENT '', 
    `POPULATION` INT NULL COMMENT '', 
    -- No COMMENT on PK 
    PRIMARY KEY (`ID_CITY`) 
) ENGINE = InnoDB; 

CREATE TABLE IF NOT EXISTS `sakila`.`actor` (
    `actor_id` SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '', 
    `first_name` VARCHAR(45) NOT NULL COMMENT '', 
    `last_name` VARCHAR(45) NOT NULL COMMENT '', 
    `last_update` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '', 
    -- No COMMENT on PK or INDEX 
    PRIMARY KEY (`actor_id`), 
    INDEX `idx_actor_last_name` (`last_name` ASC) 
) ENGINE = InnoDB 
    DEFAULT CHARACTER SET = utf8; 

Или все дело без любого пустых COMMENT s:

CREATE TABLE IF NOT EXISTS `university`.`CITY` (
    `ID_CITY` INT NOT NULL COMMENT 'A comment that is not blank!', 
    `CNAME` TEXT(15) NULL, 
    `POPULATION` INT NULL, 
    PRIMARY KEY (`ID_CITY`) 
) ENGINE = InnoDB; 

(То же самое для другой таблицы)

MySQL, как правило, довольно хорошо, указывая вас прямо к источнику ваша синтаксическая ошибка с сообщением об ошибке:

chec K инструкцию, которая соответствует вашей версии сервера MySQL для правильного синтаксиса, чтобы использовать рядом с «COMMENT„“),

За исключением ошибок, возникающих в конце заявления, которые получают немного неоднозначным, то правильный синтаксис для использования рядом с покажет вам, что именно не так. В приведенном выше случае COMMENT '') должен направить вас к единственному атрибуту COMMENT, за которым следует ), который был в PRIMARY KEY. Оттуда проверьте руководство (связанное выше) для юридического синтаксиса в каждом сегменте вашего заявления.

+0

Большое вам спасибо! Я попробую это :) – Kleeo

+0

@Kleeo Отличный, сообщите нам, если у вас возникнут какие-либо проблемы, и добро пожаловать в Stack Overflow. Не забудьте [принять тур] (https://stackoverflow.com/tour), если вы еще этого не сделали. –

2

Ну, BIG Probleme что Mysql Workbench добавляет себя индексы комментарии, которые генерируют ошибку при использовании «Форвард инженер» или «Синхронизировать» Модель

Эта проблема не существовала, когда я использую версию 6.0.

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