Может быть, HBM2DDL.Auto = обновление не чтит разных пользователей БД?

StackOverflow https://stackoverflow.com/questions/4808244

Вопрос

Мы сталкиваемся с странным спящим поведением с hbm2ddl.auto установлен в update.

В нашей настройке теста у нас есть два пользователя базы данных, один содержащий таблицы для нашего бета -приложения, другой используется в основном для разработки. Т.е. имена таблиц с разными пользователями. Когда должны быть созданы новые таблицы, мы делаем это, используя hbm2ddl.auto=update.

Теперь вдруг странное поведение: процесс обновления ищет существующие таблицы с неправильным пользователем и создает тех, кто не найден с правильным пользователем.

Например, если существуют следующие таблицы

USER_A.TABLE_1
USER_B.TABLE_2

И мы обновляемся с тремя настройками таблиц: TABLE_1, TABLE_2, TABLE_3 Используя user_b, мы получим

USER_A.TABLE_1
USER_B.TABLE_2
USER_B.TABLE_3

TABLE_1 не создан для USER_B. Анкет После переименования USER_A.TABLE_1 к USER_A.TABLE_0 И снова обновляем, мы получим ожидаемый результат:

USER_A.TABLE_0
USER_B.TABLE_1
USER_B.TABLE_2
USER_B.TABLE_3

Это имеет смысл кому -либо? Есть ли что -то вроде внутреннего кэша сгибания, запоминающегося «Эй, я уже создал эту таблицу на этом сервере (и мне не волнует пользователь)».

Мы потратили довольно некоторые тестирование, чтобы убедиться, что это не проблема конфигурации, воспроизводив это на разных машинах, различных конфигурациях, от муравья или использования IDE, убедившись, что пароль user_a не может быть найден в каталоге сборки и т. Д. Конечно, поведение, как описано, - но у нас совершенно нет идей, что происходит.

Я был бы очень рад услышать ваши идеи по этому поводу, так как эта проблема некоторое время нотает.

Большое спасибо, Питер

Это было полезно?

Решение

Есть ли что -то вроде внутреннего кэша сгибания, запоминающегося «Эй, я уже создал эту таблицу на этом сервере (и мне не волнует пользователь)».

Нет. Вероятно, происходит то, что user_a может видеть таблицы, созданные в учетной записи user_b, и наоборот. Не ясно, какая база данных вы используете, но я бы попытался настроить Hibernate для использования двух разных схем, в дополнение к использованию только разных пользователей. Вы также можете попытаться установить свойство «hibernate.default_schema», но я не уверен, что это только решит вашу проблему.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top