2012-11-05 2 views
1

Dépassement de pile bon jour.vidage mysql de linux à windows

Je rencontre des problèmes lors de l'importation d'un fichier SQL sur ma machine Windows. Le fichier sql provient d'une machine Linux. Qu'est-ce qui se passe, c'est que les noms de table de linux sont camel cased et lors de la migration vers Windows, tout devient inférieur cased. Je ne veux pas ajuster mes codes pour pouvoir accéder à ma base de données. Y a-t-il de toute façon que je puisse obtenir les noms de tables à chameau dans Windows?

Merci beaucoup.


des noms de table linux: -> FooBar

Quand il est importé établi mysql dans les fenêtres: -> foobar

la requête ressemble à ceci:

SELECT * FROM FooBar; // when the program is pointed to the database in windows, it will spit out that the table does not exist because the table name is "foobar" 
+2

MySQL n'est pas sensible à la casse, vous _shouldn't need_ pour ajuster vos scripts pour le faire fonctionner. – phillid

+0

mais mes codes java crachent des erreurs en disant que la table n'existe pas. Quand j'ai essayé de modifier le nom de la table dans mon code source pour récupérer des données, cela a fonctionné. C'est trop épuisant pour changer tous les noms de table, surtout si les codes seront en cours d'exécution sur Linux, vous devrez revenir à nouveau. – Oneb

+0

Bonne journée, Oneb, je pense qu'il y a une autre erreur à portée de main. Pouvez-vous nous donner plus d'informations sur l'erreur exacte que vous recevez et le code qui la déclenche? – sunnyrjuneja

Répondre

2

Il existe une différence entre Linux et Windows sur la façon dont les deux systèmes d'exploitation stockent les noms de table (en n'autorisant que les minuscules ou les minuscules). Cela peut être contrôlé par la variable système lower_case_table_names. L'installation de Windows, a probablement cette valeur sur 1 et votre serveur Linux a cette valeur définie comme 0. Suite à la partie du Manuel de l'utilisateur « Identifier Case Sensitivity », vous avez deux options:

Utilisez lower_case_table_names=1 sur tous les systèmes. Le principal inconvénient avec ceci est que lorsque vous utilisez SHOW TABLES ou SHOW DATABASES, vous ne voyez pas les noms dans leur boîte aux lettres d'origine.

ou

Utilisez lower_case_table_names=0 sur Unix et lower_case_table_names=2 sur de Windows. Cela préserve la boîte aux lettres des noms de base de données et de table. L'inconvénient de ceci est que vous devez vous assurer que vos déclarations se réfèrent toujours à vos noms de base de données et de table avec le bon format sous Windows. Si vous transférez vos relevés à Unix, où la lettre est significative, ils ne fonctionnent pas si la lettre est incorrecte.

Quelques liens:

+0

merci beaucoup mon pote – Oneb

+0

Semble qu'il y a aussi un problème lors de l'échappement ». Windows s'échappe comme \ ', mais Linux semble avoir besoin de' '. – olivervbk