2

phpMyAdmin と Sequel で以下のクエリを実行すると、次のエラーが発生しました。

#1064 - SQL 構文にエラーがあります。3 行目の「id Int UNSIGNED NOT NULL AUTO_INCREMENT, login Char(128) NOT NULL, passw」の近くで使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

このクエリのエラーがわかりません。Mysql は 5.5.25 バージョンで実行されています。

CREATE TABLE user
(
  id Int UNSIGNED NOT NULL AUTO_INCREMENT,
  login Char(128) NOT NULL,
  password Char(128) NOT NULL,
  emailaddress Char(128),
  alternateemailaddress Char(128),
  officephone Char(20),
  officefax Char(20),
  mobilephone Char(20),
  client Int UNSIGNED,
  facility Int UNSIGNED,
  user_status Int UNSIGNED NOT NULL DEFAULT 0,
  valid_from Datetime NOT NULL,
  valid_to Datetime NOT NULL,
  last_login Datetime,
  last_login_from Char(48),
  modified_by Int NOT NULL,
  modified_time Datetime,

  PRIMARY KEY (id),
  FOREIGN KEY client REFERENCES client (id) ON DELETE CASCADE,
  FOREIGN KEY facility REFERENCES facility (id) ON DELETE CASCADE
 
 ) ENGINE = InnoDB
  AUTO_INCREMENT = 0
;
4

2 に答える 2

1

これは私にとってはうまくいきます。
成功したSQLFiddleを参照してください

おそらくタブなど、入力に奇妙な空白文字が含まれていると思います。

于 2013-04-15T04:39:50.997 に答える
1

テーブルとフィールドの名前を記述するときはバックスティックを使用して、MySQL が予約済みのキーワードとして解析しないようにする必要があります。外部キー名を囲む括弧も使用する必要があります。作業クエリは次のようになります。

CREATE TABLE `user`
(
  `id` Int UNSIGNED NOT NULL AUTO_INCREMENT,
  `login` Char(128) NOT NULL,
  `password` Char(128) NOT NULL,
  `emailaddress` Char(128),
  `alternateemailaddress` Char(128),
  `officephone` Char(20),
  `officefax` Char(20),
  `mobilephone` Char(20),
  `client` Int UNSIGNED,
  `facility` Int UNSIGNED,
  `user_status` Int UNSIGNED NOT NULL DEFAULT 0,
  `valid_from` Datetime NOT NULL,
  `valid_to` Datetime NOT NULL,
  `last_login` Datetime,
  `last_login_from` Char(48),
  `modified_by` Int NOT NULL,
  `modified_time` Datetime,

  PRIMARY KEY (`id`),
  FOREIGN KEY (`client`) REFERENCES `client` (`id`) ON DELETE CASCADE,
  FOREIGN KEY (`facility`) REFERENCES `facility` (`id`) ON DELETE CASCADE

 ) ENGINE = InnoDB
  AUTO_INCREMENT = 0
;
于 2013-04-15T04:30:38.140 に答える