Je travaille sur une base de données MySQL sous Windows.
Je dois le déplacer dans un environnement Linux. La base de données MySQL contient un grand nombre de tables et de procédures stockées sensibles à la casse.
Lorsque je sauvegarde ma base de données, tous les noms de table sont forcés en minuscule. Ainsi, lorsque je la restaure sous Linux, il se plaint car vous ne pouvez pas créer de tables dupliquées ni de procédures stockées.
Je n’ai pas accès à la configuration de MySQL dans l’environnement Linux, je ne peux donc pas modifier les paramètres de MySQL en mode insensible à la casse.
Existe-t-il un moyen de forcer MySQL (version 5.x) à utiliser des noms de table sensibles à la casse dans Windows?
Lisez tout ceci: http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.html
Ajoutez ensuite cette variable système à la section serveur, [mysqld]
, de my.ini
et redémarrez mysql:
/my.ini: lower_case_table_names = 2
Consultez cet article - http://dev.mysql.com/doc/refman/5.1/fr/identifier-case-sensitivity.html
Le mode 2 permet de stocker des tables avec un casier spécifié, mais de toute façon, les comparaisons de noms ne seront pas sensibles à la casse et vous ne pourrez pas stocker table1
et Table1
en même temps.
Malheureusement, il est impossible de faire en sorte que MySQL sous Windows se comporte à 100% comme sous Linux. Ce que vous pouvez faire est d’exécuter un VM minimal sur Virtual Box ou Lecteur VMware avec Clé de contact - MySQL Appliance .
D'après mon expérience personnelle, j'ai trouvé très utile de disposer d'une VM avec une configuration similaire à l'environnement de déploiement pour diagnostiquer les problèmes.
Sous Windows, mettez lower_case_table_names = 2 à la fin du fichier C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
j'ajoute cette ligne et résout le problème de cas différent
lower_case_table_names = 1
dans /etc/my.cnf
vous pouvez voir comment définir la variable mysql "lower_case_table_names" de cette page: https://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_lower_case_table_names
Ajouter cette propriété à lower_case_table_names = 2 à my.ini