前缀密钥MySQL不正确

Eri*_*ler 7 php mysql ubuntu mariadb

我在使用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;
Run Code Online (Sandbox Code Playgroud)

在ubuntu minimal中使用MariaDB.

Sam*_*tch 6

问题是:

PRIMARY KEY (`id`(7))
Run Code Online (Sandbox Code Playgroud)

你不能使用数字的一部分作为关键,你必须使用整个事物.此外,指定数字类型的长度最多也是无用的,最坏的情况下是有害的.

改成:

PRIMARY KEY (`id`)
Run Code Online (Sandbox Code Playgroud)


Ken*_*ney 1

我以前从未见过这种主键语法。尝试这个:

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

或者如果你想要

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