web-dev-qa-db-ja.com

プレフィックスキーMySQLが正しくありません

Phpmyadminでテーブルを作成する際に問題が発生し、次のエラーが発生します。

#1089-プレフィックスキーが正しくありません。使用されているキー部分が文字列ではない、使用されている長さがキー部分より長い、またはストレージエンジンが一意のプレフィックスキーをサポートしていない

これは私が行うクエリです:

CREATE TABLE `b2b`.`users` ( `id` BIGINT NOT NULL AUTO_INCREMENT ,
 `name` VARCHAR(30) NOT NULL ,
 `surnames` VARCHAR(80) NOT NULL ,
 `birthdate` DATE NOT NULL ,
 `drivingdoc` VARCHAR(20) NOT NULL ,
 `acdate` DATE NOT NULL ,
 `countrydoc` VARCHAR(20) NOT NULL ,
 `province` VARCHAR(20) NOT NULL ,
 `locality` VARCHAR(35) NOT NULL ,
 `address` VARCHAR(150) NOT NULL ,
 `number` VARCHAR(20) NOT NULL ,
 `flat` VARCHAR(20) NOT NULL ,
 `door` VARCHAR(20) NOT NULL ,
 `description` VARCHAR(2000) NOT NULL ,
 PRIMARY KEY (`id`(7))) ENGINE = InnoDB;

最小限のubuntuでMariaDBを使用します。

7
Erik Neller

問題は:

PRIMARY KEY (`id`(7))

数字のpartをキーとして使用することはできません。すべてを使用する必要があります。また、数値型の長さを指定することは、せいぜい役に立たず、最悪の場合は損害を与えます。

への変更:

PRIMARY KEY (`id`)
6
Sammitch

その主キーの構文は、私が今まで見たことがないものです。これを試して:

CREATE TABLE `b2b`.`users` (
 `id` BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
   ....
) ENGINE = InnoDB;

またはあなたが望むなら

CREATE TABLE `b2b`.`users` (
 `id` BIGINT NOT NULL AUTO_INCREMENT,
   ....
 PRIMARY KEY (id) 
) ENGINE = InnoDB;
1
Kenney

SQLにいくつかのエラーがあるので、このSQLとの違いを見つけてください

 CREATE TABLE  `b2b`.`users` ( `id` INT(7) NOT NULL AUTO_INCREMENT ,
 `name` VARCHAR(30) NOT NULL ,
 `surnames` VARCHAR(80) NOT NULL ,
 `birthdate` DATE NOT NULL ,
 `drivingdoc` VARCHAR(20) NOT NULL ,
 `acdate` DATE NOT NULL ,
 `countrydoc` VARCHAR(20) NOT NULL ,
 `province` VARCHAR(20) NOT NULL ,
 `locality` VARCHAR(35) NOT NULL ,
 `address` VARCHAR(150) NOT NULL ,
 `number` VARCHAR(20) NOT NULL ,
 `flat` VARCHAR(20) NOT NULL ,
 `door` VARCHAR(20) NOT NULL ,
 `description` VARCHAR(255) NOT NULL ,
 PRIMARY KEY (`id`)) ENGINE = InnoDB;
0
Sergey Belyakov