2015-12-04 15 views
5

Mam problem tworzenia tabeli z phpmyadmin, co daje mi następujący błąd:Nieprawidłowy klucz prefiks MySQL

#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

To zapytanie, co robię:

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; 

Korzystanie MariaDB w ubuntu minimalny.

Odpowiedz

1

Ta składnia klucza głównego jest niczym innym, niż kiedykolwiek widziałem. Spróbuj tego:

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

Albo jeśli chcesz

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

Problemem jest:

PRIMARY KEY (`id`(7)) 

Nie można używać część z szeregu jako klucz, trzeba użyć Cała sprawa. Również określanie długości dla typów liczbowych jest w najlepszym wypadku bezużyteczne, aw najgorszym - niszczące.

Zmiana:

PRIMARY KEY (`id`) 
0

Masz kilka błędów w sql, więc spróbować znaleźć różnicę z tym 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

Opcja '(7)' jest w zasadzie bezużyteczny w tym kontekście, także. –

+0

"Spróbuj znaleźć różnicę" nie jest pomocne. – Christian