2

MySQLとPostgreSQLに移行するアプリケーションがあり、どちらもデータの割り当てで異なる動作をします。

Postgresで作成されたデータベースを分析したところ、各テーブルで作成されたIDの番号が、別のテーブルの変更でリセットされていないことがわかりました。たとえば、レジ​​スタ3'Table1'に設定され、ID 1から3をカウントします。別のテーブルの別のクラスのオブジェクトに挿入された場合、そのテーブルのIDを開始する必要がありますが、前のシーケンスとオブジェクトが「table2」に永続化されると、代わりにIDでの最初の開始は4からカウントされ続けます。「false」フィールド「boolean」がpreenchdioであり、Postgresの「0」が「 false'。

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と同じパターンに従うことができますか?

4

1 に答える 1

1

Hibernate は、Postgres と Oracle の両方ですべてのテーブルに対して単一のシーケンスを作成しますが、テーブルごとに単一のシーケンスを作成するのは簡単です。このソリューションを参照してください: http://grails.1312388.n4.nabble.com/One-hibernate-sequence-is-used-for-all-Postgres-tables-td1351722.html#a1351725

カスタム方言を使用するには、src/groovy または src/java にクラスを作成します。必要なパッケージとクラス名を使用してください。Grails に登録するには、ブロック内のdialectプロパティを設定します。dataSourceDataSource.groovy

dataSource {
   pooled = true
   dialect = com.foo.bar.MyDialect
   driverClassName = ...
   username = ...
   password = ...
}
于 2012-10-12T01:37:19.633 に答える