我有一个迁移到 MySQL 和 PostgreSQL 的应用程序,并且在数据分配方面有不同的行为。
通过分析在 Postgres 中创建的数据库,我意识到每个表中创建的 ID 编号不会因另一个表的更改而重置。例如,它被设置在寄存器3'Table1'中,并且计数ID 1到3。当插入另一个表中另一个类的对象时,该ID应该从该表开始,但它遵循前面和后面的顺序当对象被持久化在'table2'中时,他的第一个ID开始继续从4开始计数。我还注意到Mysql中的一些变化,因为'false'字段'boolean'是preenchdio,在Postgres中填充了'0'错误的 '。
我更新了 JDBC 但问题仍然存在。我认为也许现场应该有一些“映射”配置,但不确定。
我的数据源是:
environments {
development {
dataSource {
dbCreate = "update" // one of 'create', 'create-drop', 'update', 'validate', ''
url = "jdbc:postgresql://localhost:5432/app"
driverClassName = "org.postgresql.Driver"
dialect = org.hibernate.dialect.PostgreSQLDialect
//url = "jdbc:mysql://localhost:3306/app"
username = "app"
password = "app123"
}
}
test {
dataSource {
dbCreate = "update"
url = "jdbc:h2:mem:testDb;MVCC=TRUE;LOCK_TIMEOUT=10000"
username = "sa"
password = ""
}
}
production {
dataSource {
dbCreate = "update"
url = "jdbc:postgresql://localhost:5432/app"
driverClassName = "org.postgresql.Driver"
username = "postgres"
pooled = true
properties {
maxActive = -1
minEvictableIdleTimeMillis=1800000
timeBetweenEvictionRunsMillis=1800000
numTestsPerEvictionRun=3
testOnBorrow=true
testWhileIdle=true
testOnReturn=true
validationQuery="SELECT 1"
}
}
}
}
您可以遵循与 Mysql Postgres 中相同的模式吗?
Hibernate 为 Postgres 和 Oracle 中的所有表创建单个序列,但为每个表创建单个序列很容易。请参阅此解决方案:http://grails.1312388.n4.nabble.com/One-hibernate-sequence-is-used-for-all-Postgres-tables-td1351722.html#a1351725 http://grails.1312388.n4.nabble.com/One-hibernate-sequence-is-used-for-all-Postgres-tables-td1351722.html#a1351725
要使用自定义方言,请在 src/groovy 或 src/java 中创建类。使用您想要的任何包和类名称。要将其注册到 Grails 中,请设置dialect
财产在dataSource
阻止DataSource.groovy
, e.g.
dataSource {
pooled = true
dialect = com.foo.bar.MyDialect
driverClassName = ...
username = ...
password = ...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)