2017-05-16 3 views
0

Ich bin zu MySQL neu und ich führe Version 5.7.19-log (mindestens das, was ich vom Befehlszeilenclient bekomme) mit Workbench 6.3.9 Gemeinschaftsedition. Mein Problem ist, ich versuche, eine einfache Tabelle mit automatisch generierten ID über die Benutzeroberfläche zu erstellen, aber wenn ich das Skript ausführen, es wirft mir die folgenden Fehler:MySQL Tabellenerstellungsfehler in der Werkbank

Operation failed: There was an error while applying the SQL script to the database. 
Executing: 
CREATE TABLE `travelportaldb`.`user` (
    `user_id` INT GENERATED ALWAYS AS() VIRTUAL, 
    `name` VARCHAR(45) NOT NULL, 
    `account_id` VARCHAR(15) NULL, 
    `account_currency` CHAR(3) NULL, 
    `account_balance` DECIMAL NULL, 
    PRIMARY KEY (`user_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 ') VIRTUAL, 
    `name` VARCHAR(45) NOT NULL, 
    `account_id` VARCHAR(15) NULL, 
    `ac' at line 2 
SQL Statement: 
CREATE TABLE `travelportaldb`.`user` (
    `user_id` INT GENERATED ALWAYS AS() VIRTUAL, 
    `name` VARCHAR(45) NOT NULL, 
    `account_id` VARCHAR(15) NULL, 
    `account_currency` CHAR(3) NULL, 
    `account_balance` DECIMAL NULL, 
    PRIMARY KEY (`user_id`)) 

Dies ist das Skript, das es erzeugte:

CREATE TABLE `travelportaldb`.`user` (
    `user_id` INT GENERATED ALWAYS AS() VIRTUAL, 
    `name` VARCHAR(45) NOT NULL, 
    `account_id` VARCHAR(15) NULL, 
    `account_currency` CHAR(3) NULL, 
    `account_balance` DECIMAL NULL, 
    PRIMARY KEY (`user_id`)); 

Ich habe keine Ahnung, was los ist. Ich komme aus dem Orakel-Hintergrund und die Abfrage scheint in Ordnung zu sein, außer den automatisch generierten Auseinandersetzungen, von denen ich keine Ahnung habe.

Bitte helfen.

Danke.

+0

ich nicht virtuelle Spalten noch studiert haben, aber ... macht es Sinn, einen leeren haben Definition? –

+0

Nicht sicher, was Workbench versucht zu tun. Autoinkrement in Mysql sollte etwa so aussehen: 'INT AUTO_INCREMENT' –

+0

' INT GENERIERT IMMER AS (Ausdruck) '<- erwartet einen nicht leeren Ausdruck. Sehen Sie hier über generierte Spalten: https://dev.mysql.com/doc/refman/5.7/en/create-table-generated-columns.html – poncha

Antwort

0

Wenn Sie auf die generated Flag in MySQL Workbench wechseln die Spalte Details Felder ein wenig ändern Sie die gewünschten Optionen für eine generierte Spalte zu ermöglichen Einstellung:

enter image description here

Am wichtigsten ist hier das Expression Feld. Für eine generierte Spalte müssen Sie einen Ausdruck angeben, der für die Generierung verwendet wird. Offensichtlich haben Sie das nicht gemacht und daher sind in Ihrem generierten SQL die Spaltendefinitionen falsch (leere Klammern, wo ein Ausdruck sein sollte).

PS: Sie können auch die verwendete Server-Version in den Session Registerkarte sehen:

enter image description here

Verwandte Themen