web-dev-qa-db-fra.com

Comment forcer les noms de table sensibles à la casse?

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?

38
Ehsan Khodarahmi

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

45
ATorras

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.

8
Devart

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.

4
Augusto

Sous Windows, mettez lower_case_table_names = 2 à la fin du fichier C:\ProgramData\MySQL\MySQL Server 5.7\my.ini

4
Evgeny Chashnik

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

1
Hatem Badawi

Ajouter cette propriété à lower_case_table_names = 2 à my.ini

0
Kris