Est-ce que hbm2ddl.auto = mise à jour ne respectent les différents utilisateurs de DB, peut-être?
-
24-10-2019 - |
Question
Nous rencontrons le comportement de mise en veille prolongée étrange avec hbm2ddl.auto
ensemble à update
.
Dans notre configuration de test, nous avons deux utilisateurs de bases de données, l'une contenant les tables pour notre application bêta, l'autre est principalement utilisé pour le développement. C'est à dire. mêmes noms de table avec différents utilisateurs.
Lorsque de nouvelles tables doivent être créées, nous le faisons en utilisant hbm2ddl.auto=update
.
Maintenant, tout à coup le comportement étrange est:. Le processus de mise à jour pour les tables existantes regarde avec le mauvais utilisateur et crée les pas trouvé avec l'utilisateur droit
par exemple. si les tableaux ci-dessous existe
USER_A.TABLE_1
USER_B.TABLE_2
et nous mettons à jour avec trois tables configurées: TABLE_1, TABLE_2, TABLE_3
en utilisant Utilisateur_b, nous nous retrouvons avec
USER_A.TABLE_1
USER_B.TABLE_2
USER_B.TABLE_3
TABLE_1
n'est créée pour USER_B
. Après avoir renommé USER_A.TABLE_1
à USER_A.TABLE_0
et mettre à jour à nouveau nous nous retrouvons avec le résultat escompté:
USER_A.TABLE_0
USER_B.TABLE_1
USER_B.TABLE_2
USER_B.TABLE_3
Est-ce que aucun sens à tout le monde? Y at-il quelque chose comme un cache de mise en veille prolongée interne comme souvenir « Hey je l'ai déjà créé ce tableau sur ce serveur (et je ne se soucient pas de l'utilisateur) ».
Nous avons passé pas mal de tests pour rassurer ce n'est pas un problème de configuration, reproduit ce sur des machines différentes, différentes configurations, de fourmis ou en utilisant l'IDE, ce qui rend le mot de passe user_a sûr ne peut être trouvée nulle part dans le répertoire de construction, etc. Nous sont sûrs à 100%, le comportement est décrit comme - mais nous sommes complètement d'idées Qu'advient-il
.Je serais très heureux d'entendre vos idées à ce sujet, car ce problème est lancinante depuis un certain temps.
Merci beaucoup, Peter
La solution
NonY at-il quelque chose comme un cache de mise en veille prolongée interne comme souvenir « Hey je l'ai déjà créé ce tableau sur ce serveur (et je ne se soucient pas de l'utilisateur) ».
. Ce qui est probablement se produire est que user_a peut voir les tableaux créés sous le compte Utilisateur_b, et vice-versa. Il est pas clair que la base de données que vous utilisez, mais je voudrais essayer de configurer Hibernate d'utiliser deux schémas différents, en plus d'utiliser les utilisateurs tout simplement différents. Vous pouvez également essayer de définir la propriété « hibernate.default_schema », mais je ne suis pas sûr que cela ne résoudra votre problème.