Bases SQL

Matériel

Logiciels

SQLite : une base de données SQLPostGreSQLPostGreSQL sur un Raspberry Pi : une base de données SQLMySQL :voir la page mysqlMariadb : une base de données (fork de MySQL)Oracle : voir la page sqloracleGestion des bases SQL :phpMyAdmin : une interface web pour gérer les BDD SQLAdminer : une interface web pour gérer les BDD SQL

Tutoriels

Récupérer un base de donnée MySQLManuel de référence MySQL 8.0 - Structure du langage

Problèmes et solutions

Les préfixes peuvent faire jusqu'à 1000 octets (767 octets pour les tables InnoDB).

Or, dans les instructions CREATE TABLE, la longueur du préfixe est un nombre de caractères ...“. Un caractère utf8 peut utiliser jusqu'à 3 octets. Vous ne pouvez donc pas indexer les colonnes ou les préfixes de colonnes de plus de 255 caractères utf8.

“Pour les colonnes CHAR, VARCHAR, BINARY et VARBINARY, des index peuvent être créés qui n'utilisent que la première partie des valeurs de colonne, en utilisant la syntaxe `col_name`(length) pour spécifier une longueur de préfixe d'index. ... Pour un index UNIQUE, visez une longueur maximum de 191.

Mettez donc une longueur plus petite pour chaque clé pour ne pas dépasser la limite totale.

Par exemple, si la clé ConfigValue est définie sur 255, n'utilisez dans l'index que ses 20 premiers caractères au lieu de 255

... `ConfigValue` VARCHAR(255) ..., ... UNIQUE KEY `key_ConfigValue` (`ConfigValue`(20),...), ...

Autre méthode, en ligne de commande (suppose un accès en mode terminal)

Ouvrez un client MySQL (ou MariaDB) en ligne de commande. Entrez votre login et mot de passeSélectionnez votre base de données et lance ces commandes :

...@...:~ $ use my_database_name;
Database changed
...@...:~ $ set global innodb_large_prefix=on;
Query OK, 0 rows affected (0.00 sec)
...@...:~ $ set global innodb_file_format=Barracuda;
Query OK, 0 rows affected (0.02 sec)

Accédez à votre base de données avec phpMyAdmin ou AdminerSélectionnez la base de donnéesAfficher la structure de la tableAllez à l'onglet OpérationsChangez ROW_FORMAT en DYNAMIC et enregistrez les modificationsAller à l'onglet structure de la tableCliquez sur le bouton UniqueTerminé. Maintenant, il ne devrait y avoir aucune erreur.

Voir aussi

(fr) http://

Basé sur << Article >> par Auteur.