2016-03-21 9 views
-4
CREATE TABLE `test` (
`a` int NOT NULL, 
    `b` varchar DEFAULT NULL, 
    `c` varchar(64) NOT NULL, 
    `d` int DEFAULT 0, 
    `e` varchar(7) DEFAULT NULL, 
    `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
    `f` varchar DEFAULT NULL, 
    PRIMARY KEY (`a`,`c`,`timestamp`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

このクエリを実行すると、次のエラーが発生します。テーブルエラーの作成

ERROR 1064(42000):SQL構文にエラーがあります。近くで使用する権利 構文についてはMySQLサーバのバージョンに対応 手動チェックのデフォルトのNULL、emailId VARCHAR(64)NOT NULLを、
score int型のDEFAULT 0、 `STAT"

私が試してみました列を削除した後に挿入します。私は同じエラーが発生します。

私は見つけることができません。助言がありますか?

+3

Plsのは、実際のcreate table文ではなく、消毒バージョンを貼り付けるクエリです! – Shadow

+1

あなたが共有したコードには、少なくとも1つの曖昧な構文エラーがあります。同じことが、そのエラーメッセージを引き起こす非公開のコードで発生するようです。 –

+1

put varchar length –

答えて

1

長はvarchar型に欠けているように

`b` varchar DEFAULT NULL, 

は、フィールドの長さを宣言し、varchar型を設定長さは以下のとおりです。

CREATE TABLE `test` (
    `a` int NOT NULL, 
    `b` varchar(50) DEFAULT NULL, 
    `c` varchar(64) NOT NULL, 
    `d` int DEFAULT 0, 
    `e` varchar(7) DEFAULT NULL, 
    `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
    `f` varchar(50) DEFAULT NULL, 
    PRIMARY KEY (`a`,`c`,`timestamp`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 
0

あなたがフィールドbfためのvarchar型の長さを宣言していない:

`b` varchar(10) DEFAULT NULL, 
+0

あなたは 'f'を忘れた – sagi

0

varchar型は、varchar型の長さを与えることをしようと、ここで

CREATE TABLE `test` (
    `a` int NOT NULL, 
    `b` varchar(40) DEFAULT NULL, 
    `c` varchar(64) NOT NULL, 
    `d` int DEFAULT 0, 
    `e` varchar(7) DEFAULT NULL, 
    `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
    `f` varchar(40) DEFAULT NULL, 
    PRIMARY KEY (`a`,`c`,`timestamp`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 
関連する問題