MySQL的前缀键不正确[重复]
Posted
技术标签:
【中文标题】MySQL的前缀键不正确[重复]【英文标题】:Incorrect prefix key MySQL [duplicate] 【发布时间】:2016-03-09 19:19:32 【问题描述】:我在使用 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。
【问题讨论】:
【参考方案1】:问题是:
PRIMARY KEY (`id`(7))
你不能使用数字的部分作为键,你必须使用整个东西。此外,为数字类型指定长度充其量是无用的,最坏的情况是有害。
改为:
PRIMARY KEY (`id`)
【讨论】:
【参考方案2】:我以前从未见过这种主键语法。试试这个:
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;
【讨论】:
【参考方案3】:你的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;
【讨论】:
(7)
在这种情况下也基本上没用。
'尝试找出差异'没有帮助。以上是关于MySQL的前缀键不正确[重复]的主要内容,如果未能解决你的问题,请参考以下文章
mysql主主同步两个数据库同时写入,实现原理:自动增长主键不重复