2017-05-09 8 views
-1

MySQL 버전 5.7.18을 사용 중이며 MySQL Workbench는 버전 5.6.20을 사용 중입니다. 나는 시도하고 다음과 같은 SQL 문을 생성하는 테이블 생성기 사용하여 테이블을 만들 때, :MySQL Workbench create table은 에러를 던지는 SQL을 생성합니다.

CREATE TABLE `sys`.`annotations` (
    `id` INT GENERATED ALWAYS AS() VIRTUAL, 
    `annotation` LONGTEXT NOT NULL, 
    PRIMARY KEY (`id`)); 

을하지만 다음과 같은 오류 메시지가 생성됩니다 방법

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 ') STORED', 
    `annotation` LONGTEXT NOT NULL, 
    PRIMARY KEY (`id`))' at line 2 
SQL Statement: 
CREATE TABLE `sys`.`annotations` (
    `id` INT GENERATED ALWAYS AS() STORED, 
    `annotation` LONGTEXT NOT NULL, 
    PRIMARY KEY (`id`)) 

왜 이런 일이 될 것입니다 및 것 이걸 고치려고?

답변

0

빈 계산식이 계산 된 열에 어떤 의미인지는 알지 못합니다. 또한 VIRTUAL 열이 기본 키라는 것을 이해하지 못합니다. 나는 다음과 같이 쓸 것이다 :

CREATE TABLE sys.`annotations` (
    `id` INT AUTO_INCREMENT PRIMARY KEY, 
    `annotation` LONGTEXT NOT NULL 
); 
+0

따라서 virtual은 다음 중 하나이다 : virtual 또는 stored이며 그 열의 저장 방법 인 것 같다. 나는이 키가 이웃이 될 것을 보장하지 않기 때문에 생성 된 것을 사용했다. – Sebastian

+0

@SebastianMalton. . . 나는이 솔루션에 도달하기 위해'auto_incremented '가 훨씬 간단하다고 생각한다. 프라이 머리 키 값이 레코드와 함께 저장되기를 원한다. 그래서 가상은 나에게 이해가되지 않는다 (허용된다면, 어쨌든 구체화 될 것이다). –

+0

@PeterSmith 그러나이 메모를 주셔서 감사합니다. 그러나 생성 된 키가 "저장된"경우에도 동일한 오류가 발생했습니다. 나는 단지 증분 키를 사용하기로 결심 하였지만, 설치 프로그램으로 MySQL과 워크 벤치를 설치하면 워크 벤치가 항상 작동 할 수있는 명령문을 생성 할 수 없게됩니다. – Sebastian