2010-03-21 6 views
3

Récemment, j'ai commencé à utiliser Linux (Ubuntu 9.10) au lieu de Windows. Je travaille sur une application web java avec Spring, MYSQL avec jpa. Cependant, avant d'installer Linux, j'ai créé un fichier de sauvegarde à partir de la base de données, puis installé linux, installé les outils MYSQL Query Browser et Administrator, et en utilisant l'outil Admin, j'ai restauré le fichier de sauvegarde. l'une des tables et obtenu résultat normalement et tout semble fonctionner très bien.Problème de données avec MYSQL sous Linux

Il table USER, et il y a un namedQuery défini pour obtenir un utilisateur USERNAME, le problème est que quand je passe un bon userName je reçois toujours rien!

Je ne sais vraiment pas quel est le problème! L'application fonctionnait parfaitement sous Windows!

S'il vous plaît, quelqu'un peut me aider à résoudre ce problème?

Merci d'avance.

Répondre

2

La première chose qui vient à l'esprit est que les noms de tables MySQL sont sensibles à la casse sur Linux, mais pas sous Windows. dire cela aurait pu fonctionner sous Windows:

SELECT ... FROM User ... 

mais sur Linux vous devez utiliser le cas correct pour le nom de la table:

SELECT ... FROM USER ... 

mais sans plus d'informations, il est difficile de dire vraiment.

+0

J'allais ajouter, gardez à l'esprit que les tables sont en effet stockées sous forme de fichiers et accessibles en tant que telles. L'affaire a de l'importance. MyTable! = Mytable dans tous les cas (pardonnez le jeu de mots). +1 –

1

Il y a certains paramètres qui ont des valeurs par défaut sous Windows et Linux, casse des noms de table, etc. étant l'un d'entre eux. Il se peut qu'un paramètre non spécifié ait par défaut une valeur sur Windows, mais une autre sous Linux.

0

Vous êtes bien, et pour mon cas, j'ai découvert pourquoi était-je pas capable de se connecter passant son nom! Le problème est que lorsque je restaure le schéma à partir du fichier de sauvegarde, toutes les tables sont créées avec des noms minuscules, par exemple, la table USER serait utilisateur, puis Lorsque je démarre tomcat, JPA crée automatiquement tous les @Entity, donc il crée des tables User pour l'utilisateur @Entity, le résultat est que j'ai deux tables pour USER, une table utilisateur qui a toutes les données, et une table User vide, et c'est celle qui est utilisée par L'application! C'est pourquoi je n'ai pas pu récupérer de données car il n'y a pas de données à extraire de la table. Une solution de contournement pour résoudre ce problème J'ai modifié le fichier de sauvegarde en renommant toutes les tables comme prévu par JPA pour éviter de les créer à nouveau lors du démarrage de l'application.

Je ne sais vraiment pas s'il y a une meilleure solution, mais cela a fonctionné comme ça pour moi.

Enfin, merci beaucoup pour votre aide.

Questions connexes