Я тестирую Flyway в первый раз, версия 2.1.1. Я использую Ant задачу migrate
, которая должна создать schema_version
таблицу, если она уже не существует (и не существует в моей схеме), и я получаю эту ошибку:Flyway 2.1.1 не удается создать таблицу версий с Oracle
C:\Users\dmusiani\Desktop\flyaway-test>ant
Buildfile: build.xml
migrate-db:
[flyway:migrate] com.googlecode.flyway.core.api.FlywayException: Found non-empty
schema "SYSTEM" without metadata table! Use init() first to initialize the meta
data table.
BUILD FAILED
C:\Users\dmusiani\Desktop\flyaway-test\build.xml:37: Flyway Error: com.googlecod
e.flyway.core.api.FlywayException: Found non-empty schema "SYSTEM" without metad
ata table! Use init() first to initialize the metadata table.
Total time: 0 seconds
C:\Users\dmusiani\Desktop\flyaway-test>
Я попытался добавить init
до миграция, и в первый раз все это работает, но когда я запускаю сборку во второй раз, я получаю ошибку от init
sayng, что таблица уже существует.
Вот мой муравей цель:
<target name="migrate-db">
<path id="flyway.lib.path">
<fileset dir="./lib">
<include name="**/flyway*.jar"/>
</fileset>
</path>
<path id="flyway.classpath">
<fileset dir="./lib" includes="ojdbc6-11.2.0.3.jar"/>
</path>
<taskdef uri="antlib:com.googlecode.flyway.ant"
resource="com/googlecode/flyway/ant/antlib.xml"
classpathref="flyway.lib.path"/>
<flyway:init driver="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:WBMD"
user="system"
password="manager"
initVersion="0"
initDescription="Version table initialization (table "USERNAME"."schema_version")"/>
<flyway:migrate driver="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:WBMD"
user="system"
password="manager"
sqlMigrationPrefix="patch" >
<locations>
<location path="integrations-runtime/HELIOS/1-9-0/nlip-0-5-0/migration/system"/>
</locations>
</flyway:migrate>
</target>
Любое предложение о том, как это исправить?
*** НИКОГДА *** ни при каких обстоятельствах не запускайте приложение с пользователем SYSTEM. Только не делай этого. И никогда не создавайте свои собственные объекты в учетной записи SYSTEM. Создайте нового пользователя с «нормальными» привилегиями и используйте его. Прекратите использование учетной записи SYSTEM для вашего приложения. –
Я только сказал, что я использую право системной учетной записи для создания других пользователей для использования в приложении ... не создавать объекты на нем и не использовать его для приложения. В любом случае, я ценю ваше предупреждение. Спасибо – Damus
Создание пользователей - это работа DBA, а не ответственность «приложения», и это определенно не то, что должно быть включено в миграцию схемы. –