2017-11-01 1 views
0

私のデータベースを作成するツールを使用してMySQL Workbenchを使いこなしています。データベースをフォワードエンジニアリングしようとすると、このエラーが発生します。 SQLスクリプトのプレビューでエラー1064を与えるMySQL Workbench

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 '-01-01, 
    `PlateNum` CHAR(7) NOT NULL DEFAULT 'ABCDEFG', 
    `CellPhone` INT(10) U' at line 9 
SQL Code: 
     -- ----------------------------------------------------- 
     -- Table `MetalDelivery`.`Drivers` 
     -- ----------------------------------------------------- 
     CREATE TABLE IF NOT EXISTS `MetalDelivery`.`Drivers` (
      `DriverID` INT NOT NULL AUTO_INCREMENT, 
      `FName` CHAR(12) NOT NULL DEFAULT 'First', 
      `LName` CHAR(12) NOT NULL DEFAULT 'Last', 
      `Sex` CHAR(1) NOT NULL DEFAULT 'M', 
      `DOB` DATE NOT NULL DEFAULT 1900-01-01, 
      `PlateNum` CHAR(7) NOT NULL DEFAULT 'ABCDEFG', 
      `CellPhone` INT(10) UNSIGNED NOT NULL DEFAULT 5550000000, 
      PRIMARY KEY (`DriverID`)) 
     ENGINE = InnoDB 

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

、それは日付の任意の種類は、文字列かのように指定する必要がInnoDBの

答えて

0

後にセミコロンを示してい:

`DOB` DATE NOT NULL DEFAULT '1900-01-01' 

また、このスキーマを拡張する価値があります少し。名前はしばしば12文字以上です。 VARCHAR(255)は "文字列"フィールドの適切なデフォルトです。

これらのデフォルト値は大きな間違いです。実際の姓が「最後」である可能性があります。その場合、デフォルトを使用しているようなものか、単に姓がないものです。 NULLの値は目的を果たします。

+0

それはトリックでした!それは私のCHARのデフォルト値のための単一引用符を追加したが、そのためではないことを私に訴えました。 –

+0

単純な数値や関数呼び出しではないものは、表、列、データベースなどの「エンティティ名」のようなものを除き、引用符が必要です。これは "1900-1-1"として解析されていましたが、これはデフォルトで行うことができません。 – tadman