Comment faire pour créer ce tableau? #1071 - clé Spécifié est trop long; max la longueur de la clé est de 1000 octets
CREATE TABLE mini
(
realurl varchar(200) NOT NULL,
catagory varchar(200),
PRIMARY KEY (realurl,catagory),
FOREIGN KEY (realurl) REFERENCES main(realurl)
)
Erreur : `#1071 - clé Spécifié est trop long; max la longueur de la clé est de 1000 octets
Pourquoi je ne peux pas créer cette table? Que dois-je modifier pour créer cette table?
Il dépend. Quel type de données que vous essayez de décrire avec ce tableau?
double possible de #1071 - clé Spécifié est trop long; max la longueur de la clé est de 767 octets
Reportez-vous à stackoverflow.com/a/52778785/2137210 pour la solution
double possible de #1071 - clé Spécifié est trop long; max la longueur de la clé est de 767 octets
Reportez-vous à stackoverflow.com/a/52778785/2137210 pour la solution
OriginalL'auteur Raplus | 2013-11-16
Vous devez vous connecter pour publier un commentaire.
PRIMARY KEY (realurl,catagory)
a une taille de (200 + 200) * 3 = de 1 200 octets, ce qui est supérieur à 1 000 limite d'octets, comme MySQL stocke les caractères encodés en utf-8 que 3 octets.Vous aurez besoin de réduire la taille de la les champs qui composent la clé primaire ou vous pouvez mettre à niveau version de MySQL vers la dernière version.
Voir aussi cette autre question: Erreur: la clé Spécifié est trop long; max la longueur de la clé est de 1000 octets.
OriginalL'auteur RSaha
Ce problème commun qui se produit principalement parce que par défaut de MySql utilise la limite de caractères pour les noms de colonne. Qui est:
Ce dont nous avons besoin est donnée ci-dessous:
Pour se débarrasser de ce problème, je vous suggère d'utiliser de l'utf-8 lors de la création de la base de données avec de COLLIGER de l'ensemble de utf8_general_ci. Je préfère utiliser la commande ci-dessous pour créer la base de données MariaDb et MySql:
Commande ci-dessus m'a aidé dans mon scénario spécifique. J'utilise " Sequelize " pour créer des tableaux sur les temps d'exécution. Quand j'ai essayé d'exécuter mon code dans Ubuntu après la création de la base de données avec un simple "CRÉER une BASE de données de "commande", j'ai eu ce 1071 erreur.
L'exécution de la commande ci-dessus avec l'utf8 jeu de caractères et de rassembler m'a aidé à me débarrasser de l'erreur.
OriginalL'auteur S.Mishra
MySQL a un préfixe de limitation de 767 octets en InnoDB, et 1000 octets en MyISAM. Cela n'a jamais été un problème pour moi, jusqu'à ce que j'ai commencé à utiliser l'UTF-16 comme le jeu de caractères pour l'un de mes bases de données. UTF-16 est possible d'utiliser jusqu'à 4 octets par caractère, ce qui signifie que dans une table InnoDB, vous ne pouvez pas avoir toutes les clés de plus de 191 caractères.
OriginalL'auteur Rajasekar Gunasekaran
J'ai résolu ce problème. Créer votre base de données à l'aide de la commande suivante .
CRÉER une BASE de données <DB_NAME> CHARACTER SET utf8;
OriginalL'auteur Nids Barthwal
Vous pouvez déposer "votre base de données" et de créer à nouveau avec:
ou de modifier le fichier config. Ouvrez le fichier /etc/mysql/mariadb.conf.d/50-serveur.cnf et le changement:
OriginalL'auteur Ivan Kukurudziak
Si vous avez modifié des
innodb_log_file_size
essayer de revenir à la valeur précédente.OriginalL'auteur AnkitK
Pour résoudre ce tout ce que vous avez à faire est de modifier votre AppServiceProvider.php fichier et à l'intérieur de la méthode de démarrage définir une valeur par défaut la longueur de la chaîne:
Laravel 5.4 modification de la base de données par défaut du jeu de caractères, et il est maintenant utf8mb4 qui inclut le support pour le stockage des émoticônes. Ceci n'affecte que les nouvelles applications et aussi longtemps que vous êtes sous MySQL v5.7.7 et de plus vous n'avez pas besoin de faire quoi que ce soit.
Pour ceux qui exécutent MariaDB ou les anciennes versions de MySQL, vous pouvez frapper cette erreur lorsque vous essayez d'exécuter les migrations:
OriginalL'auteur Mayank Dudakiya