我在通过运行脚本命令填充我的 H2 datatase 时遇到了一些问题:
这是我的域类:
class Lab {
String name
static constraints = {
}
String toString() {
return name
}
static mapping = {
sort "name"
}
}
我使用 grails 生成全部命令生成了控制器和视图。
我写了一个简单的时髦脚本来添加新的实验室:
import groovy.sql.Sql
def grailsApplication
def dataSource = ctx.getBean("dataSource")
def sql = new Sql(dataSource)
Lab a = new Lab(name: "AAAAAAAAAAAAAA")
assert a.save(flush: true)
if (!a.hasErrors()) {
println "${a.name} saved successfully!"
}
现在,当我运行它时,一切看起来都正常:
AAAAAAAAAAAAAA saved successfully!
| Script scripts/createLab.groovy complete!
但是当我http://localhost:8080/myapp/lab/index
刷新网页页面时,我看不到任何新的实验室。
我正在使用默认的 H2 数据库设置。
我错过了什么吗?
您正在使用一个名为devDB (h2:mem:d evDb;)的h2内存数据库。
我在这里看到两个选项。如果你想用一个物理文件来代表你的数据库,你可以用文件代替mem。
h2:file:devDb;
或者你可以把你的脚本放在 site Bootstrap.groovy 中,每次你启动你的应用程序时,都会生成这些记录。
这边:
Lab.findOrSaveWhere(name:'AAAAAAAAAA')