php - 不正确的前缀键 MySQL

标签 php mysql ubuntu mariadb

<分区>

我在使用 phpmyadmin 创建表时遇到问题,这会给我以下错误:

#1089 - Incorrect prefix key; the used key part isn't a string, the used length is longer than the key part, or the storage engine doesn't support unique prefix keys

这是我做的查询:

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 minimal 中使用 MariaDB。

最佳答案

问题是:

PRIMARY KEY (`id`(7))

您不能使用数字的部分 作为键,您必须使用整个数字。此外,为数字类型指定长度充其量是无用的,最坏的情况是有害的。

更改为:

PRIMARY KEY (`id`)

关于php - 不正确的前缀键 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34095444/

相关文章:

php - Google 短网址 - 最大网址长度

mysql - 如何使主键从 1000 开始?

c - 在C中将图像转换为黑白的问题

PHP 命名空间 - 如果声明 Parent\Child,为什么我必须 "use {Parent}"?

php - Wordpress 上的左侧边栏不会创建菜单

mysql - SQL 如何按 "Ranges"排序

MySQL 在不加入临时表的情况下使用 GROUP BY DATE(table.timestamp) 时填写缺失的日期

java - Hibernate - 使用 @Column(length= 40000) 时不会在 Ubuntu mysql 上创建表

ubuntu - 为什么我输入子域地址时总是显示我的域网页?

php - 将 Laravel 中的数据库提交与 AngularJS 模型/ View 同步