2015-12-04 19 views
5

Ho un problema creazione di una tabella con phpMyAdmin, che mi dà il seguente errore:non corretta chiave prefisso 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

Questa è la domanda che faccio:

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; 

Utilizzando MariaDB in ubuntu minimo.

risposta

1

La sintassi della chiave primaria non è nulla che abbia mai visto prima. Prova questo:

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

Oppure, se volete

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

Il problema è:

PRIMARY KEY (`id`(7)) 

Non è possibile utilizzare parte di un numero come una chiave, è necessario utilizzare il l'intera cosa. Inoltre, specificare lunghezze per i tipi numerici è inutile nella migliore delle ipotesi e dannoso nel peggiore dei casi.

Passa a:

PRIMARY KEY (`id`) 
0

Hai diverse errori nel vostro SQL, quindi cercate di trovare la differenza con questo 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

Il '(7)' è essenzialmente inutile in tale contesto, pure. –

+0

'cercare di trovare la differenza' non è utile. – Christian

Problemi correlati