我正在尝试按照教程here。
我已使用runtime ":database-migration:1.0"
在BuildConfig.groovy文件中声明了数据库迁移插件的依赖项,然后进行了编译。我还在我的DataSource.groovy文件中注释掉了我的生产设置的dbCreate
行。我的生产数据库是空的,没有表格。
然后我尝试运行这两个命令来生成我的初始更改日志:
grails dbm-create-changelog
grails prod dbm-generate-gorm-changelog --add changelog-1.0.groovy
问题是第一个命令在我的开发数据库中创建表,而不是我的生产数据库。然后第二个命令无法创建它应该创建的changelog-1.0.groovy
文件(我假设),因为生产数据库从未创建任何表。我得到几个错误,说Hibernate无法索引数据库,我有很多这样的错误:
| Error 2012-07-10 08:40:28,704 [Compass Gps Index [pool-11-thread-2]] ERROR util.JDBCExceptionReporter - Table 'mygrailsapp_prod.some_class' doesn't exist
即使我在我的DataSource.groovy文件中注释掉我的开发设置,Grails仍然在寻找我的开发数据库。我应该指出,如果我从第二个命令中删除prod
,changelog-1.0.groovy
文件生成正常,但我不清楚是否会以某种方式搞砸,因为它是从开发数据库生成的(有在我运行第一个命令之前没有表格,而不是生产数据库。
我在这里做错了什么?
答案 0 :(得分:1)
The problem is the first command creates tables in my development database, not my production database.
这可能是因为它正在针对开发环境运行,并且您仍然将其dbCreate设置为“update”
Then the second command fails to create the changelog-1.0.groovy file it is supposed to create (I assume) because the production database never had any tables created.
这不完全准确。从您发布的链接开始,在该步骤之后说:“请注意,您的数据库将保持为空!”只有在执行dbm-update命令时才会创建数据库表。那是在更改日志实际执行的时候。
我认为您链接到的博客在第二个命令的prod开关上并不完全准确。您的域名没有任何特定于环境的信息。所以,请关闭它,你应该能继续前进。我不确定为什么会抛出这个错误。这真的没有意义。