2016-01-05 36 views
0

逗人,MySQL工作臺正向工程錯誤1064個

我創建了一個數據庫模型,並hopeping腳本它MySQL的順利使用工作臺。

下面

是由WB生成的代碼:

-- MySQL Workbench Forward Engineering 

SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0; 
SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; 
SET @[email protected]@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES'; 

-- ----------------------------------------------------- 
-- Schema resume_db 
-- ----------------------------------------------------- 

-- ----------------------------------------------------- 
-- Schema resume_db 
-- ----------------------------------------------------- 
CREATE SCHEMA IF NOT EXISTS `resume_db` DEFAULT CHARACTER SET latin1 ; 
USE `resume_db` ; 

-- ----------------------------------------------------- 
-- Table `resume_db`.`vacancies` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `resume_db`.`vacancies` (
    `id` INT(11) NOT NULL, 
    `title` VARCHAR(256) NOT NULL, 
    `htmlDesc` TEXT NOT NULL, 
    `issueDate` DATETIME NOT NULL, 
    `expiryDate` DATETIME NOT NULL, 
    PRIMARY KEY (`id`)) 
ENGINE = InnoDB 
DEFAULT CHARACTER SET = latin1; 


-- ----------------------------------------------------- 
-- Table `resume_db`.`job_history` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `resume_db`.`job_history` (
    `id` INT GENERATED ALWAYS AS() VIRTUAL, 
    `employerName` MEDIUMTEXT NOT NULL, 
    `employement_duration` VARCHAR(100) NULL, 
    `job_title` VARCHAR(256) NOT NULL, 
    `duties` VARCHAR(200) NULL, 
    `applications_id` INT NOT NULL, 
    PRIMARY KEY (`id`, `applications_id`)) 
ENGINE = InnoDB; 


-- ----------------------------------------------------- 
-- Table `resume_db`.`education_record` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `resume_db`.`education_record` (
    `id` INT GENERATED ALWAYS AS() VIRTUAL, 
    `school_name` VARCHAR(256) NOT NULL, 
    `degree_period` VARCHAR(256) NOT NULL, 
    `degree_title` VARCHAR(256) NOT NULL, 
    `degree_notes` VARCHAR(256) NULL, 
    `applications_id` INT NOT NULL, 
    PRIMARY KEY (`id`, `applications_id`)) 
ENGINE = InnoDB; 


-- ----------------------------------------------------- 
-- Table `resume_db`.`social_networks` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `resume_db`.`social_networks` (
    `id` INT GENERATED ALWAYS AS() VIRTUAL, 
    `social_network` VARCHAR(256) NOT NULL, 
    `profile_url` VARCHAR(256) NOT NULL, 
    `applications_id` INT NOT NULL, 
    PRIMARY KEY (`id`, `applications_id`)) 
ENGINE = InnoDB; 


-- ----------------------------------------------------- 
-- Table `resume_db`.`applications` 
-- ----------------------------------------------------- 
CREATE TABLE IF NOT EXISTS `resume_db`.`applications` (
    `id` INT GENERATED ALWAYS AS() VIRTUAL, 
    `name` VARCHAR(500) NULL, 
    `photo_url` VARCHAR(256) NULL, 
    `title` VARCHAR(10) NOT NULL, 
    `videoUrl` VARCHAR(256) NULL, 
    `email` VARCHAR(256) NOT NULL, 
    `vacancyID` INT NULL, 
    `location` VARCHAR(256) NULL, 
    `skills` MEDIUMTEXT NULL, 
    `htmlCoverLetter` LONGTEXT NOT NULL, 
    `resume_url` VARCHAR(256) NULL, 
    PRIMARY KEY (`id`), 
    INDEX `fk_applications_vacancies_idx` (`vacancyID` ASC), 
    CONSTRAINT `fk_applications_vacancies` 
    FOREIGN KEY (`vacancyID`) 
    REFERENCES `resume_db`.`vacancies` (`id`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION, 
    CONSTRAINT `fk_applications_job_history1` 
    FOREIGN KEY (`id`) 
    REFERENCES `resume_db`.`job_history` (`applications_id`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION, 
    CONSTRAINT `fk_applications_education_record1` 
    FOREIGN KEY (`id`) 
    REFERENCES `resume_db`.`education_record` (`applications_id`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION, 
    CONSTRAINT `fk_applications_social_networks1` 
    FOREIGN KEY (`id`) 
    REFERENCES `resume_db`.`social_networks` (`applications_id`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB; 


SET [email protected]_SQL_MODE; 
SET [email protected]_FOREIGN_KEY_CHECKS; 
SET [email protected]_UNIQUE_CHECKS; 

遺憾的是執行一次我得到以下錯誤信息:

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 'GENERATED ALWAYS AS() VIRTUAL, 
    `employerName` MEDIUMTEXT NOT NULL, 
    `employe' at line 5 
SQL Code: 
     -- ----------------------------------------------------- 
     -- Table `resume_db`.`job_history` 
     -- ----------------------------------------------------- 
     CREATE TABLE IF NOT EXISTS `resume_db`.`job_history` (
      `id` INT GENERATED ALWAYS AS() VIRTUAL, 
      `employerName` MEDIUMTEXT NOT NULL, 
      `employement_duration` VARCHAR(100) NULL, 
      `job_title` VARCHAR(256) NOT NULL, 
      `duties` VARCHAR(200) NULL, 
      `applications_id` INT NOT NULL, 
      PRIMARY KEY (`id`, `applications_id`)) 
     ENGINE = InnoDB 

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

Fetching back view definitions in final form. 
Nothing to fetch 

任何線索?

回答

0

來自MY SQL手冊...我想你需要一個表達式。

生成列定義具有以下語法:

col_name data_type [GENERATED ALWAYS] AS (expression) 
    [VIRTUAL | STORED] [UNIQUE [KEY]] [COMMENT comment] 
    [[NOT] NULL] [[PRIMARY] KEY] 

AS(表達式)表示所產生的柱,並限定用於計算列值的表達。 AS之前可能會生成GENERATED ALWAYS,以使列的生成特性更加明確。表達式中允許或禁止的構造將在後面討論。

http://dev.mysql.com/doc/refman/5.7/en/create-table.html

0

你的意思AUTO_INCREMENT

CREATE TABLE IF NOT EXISTS `resume_db`.`job_history` (
     `id` INT AUTO_INCREMENT, 
      `employerName` MEDIUMTEXT NOT NULL, 
      `employement_duration` VARCHAR(100) NULL, 
      `job_title` VARCHAR(256) NOT NULL, 
      `duties` VARCHAR(200) NULL, 
      `applications_id` INT NOT NULL, 
      PRIMARY KEY (`id`, `applications_id`)) 
     ENGINE = InnoDB 

否則,爲什麼生成一個虛擬的ID列?