我的应用程序是grails ...当我运行app时,工作正常我可以创建,修改和删除记录但是当我停止应用程序时,表中的数据似乎被回滚
可以采取一些措施来避免这种行为吗?
BuildConfig.groovy
dependencies {
// specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes eg.
// runtime 'mysql:mysql-connector-java:5.1.16'
runtime 'org.postgresql:postgresql:9.4.1207.jre7'
}
plugins {
runtime ":hibernate:$grailsVersion"
runtime ":jquery:1.7.1"
runtime ":resources:1.1.6"
DataSource.groovy中
dataSource {
pooled = true
driverClassName = "org.postgresql.Driver"
username = "****"
password = "*****"
}
hibernate {
cache.use_second_level_cache = true
cache.use_query_cache = false
cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory'
}
// environment specific settings
environments {
development {
dataSource {
dbCreate = "create-drop" // one of 'create', 'create-drop', 'update', 'validate', ''
url = "jdbc:postgresql://localhost:5432/Prizy_Pricer"
}
}
test {
dataSource {
dbCreate = "update"
url = "jdbc:postgresql://localhost:5432/Prizy_Pricer"
}
}
production {
dataSource {
dbCreate = "update"
url = "jdbc:postgresql://localhost:5432/Prizy_Pricer"
pooled = true
properties {
maxActive = -1
minEvictableIdleTimeMillis=1800000
timeBetweenEvictionRunsMillis=1800000
numTestsPerEvictionRun=3
testOnBorrow=true
testWhileIdle=true
testOnReturn=true
validationQuery="SELECT 1"
}
}
}
}
答案 0 :(得分:2)
命令grails run-app
的默认环境是 development 。虽然您为开发环境配置了PostgreSQL数据库,但dbCreate
属性设置为 create-drop ,这意味着删除所有表,然后重新启动 - 创造它们。因此,当然,删除表会删除所有数据。以下是dbCreate
的可能设置:
您可能希望将开发环境的dbCreate
设置更改为更新。
我更喜欢将 development 保留在默认的内存数据库中,只需在 BootStrap.groovy 中填充它。这样,数据库可以随时安全地丢弃。有关如何执行此操作的示例,请参阅this。