我需要用Flyway遷移一個Postgres資料庫。其中一個表包含一個TEXT列,該列包含由Hibernate撰寫的XML資料。由于在Flyway中,你手頭只有一個java.sql.Connection,所以你只能使用普通的jdbc.
在這里你可以看到一個嘗試讀取資料的片段:
String query = "SELECT calc_proc_id, calc_key, parameters AS parameters FROM calculation WHERE parameters_json IS NULL" 。
int counter = 0;
try (Statement stmt = connection.createStatement()
{
try (ResultSet rs = stmt.executeQuery(query))
{
ResultSetMetaData resultSetMetaData = rs.getMetaData()。
int columnType = resultSetMetaData.getColumnType(3)。
String columnTypeName = resultSetMetaData.getColumnTypeName(3) 。
字串 columnName = resultSetMetaData.getColumnName(3)。
logger.info("%s has %d (%s)", columnName, columnType, columnTypeName)。
while (rs.next())
{
UUID calcProcId = rs.getObject("calc_proc_id", UUID.class) 。
字串 calcKey = rs.getString("calc_key");
long oid = rs.getLong("引數")。
try (LargeObject large = lom.open(oid, LargeObjectManager.READ)
當達到這個打開的時候,我得到了以下的例外:
當達到這個打開的時候,我得到了以下的例外。
org.postgresql.util.PSQLException: 在向/后端發送時發生了一個I/O錯誤。
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:337) ~【postgresql-42. 2.9.jar:42.2.9]
at org.postgresql.jdbc.PgConnection.executeTransactionCommand(PgConnection.java:829) ~【postgresql-42. 2.9.jar:42.2.9]
at org.postgresql.jdbc.PgConnection.rollback(PgConnection.java:872) ~【postgresql-42。 2.9.jar:42.2.9]
at org.flywaydb.core.internal.jdbc.TransactionTemplate.execute(TransactionTemplate. java:90) ~[flyway-core6.0.8.jar:?]
at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate. java:279) ~[flyway-core6.0.8.jar:?]
at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate. java:244) ~[flyway-core6.0.8.jar:?]
at org.flywaydb.core.internal.command.DbMigrate.access$100(DbMigrate. java:54) ~[flyway-core6.0.8.jar:?]
at org.flywaydb.core.internal.command.DbMigrate$2.call(DbMigrate. java:162) ~[flyway-core6.0.8.jar:?]
at org.flywaydb.core.internal.command.DbMigrate$2.call(DbMigrate. java:159) ~[flyway-core6.0.8.jar:?]
at org.flywaydb.core.internal.database.postgresql.PostgreSQLAdvisoryLockTemplate.execute(PostgreSQLAdvisoryLockTemplate. java:71) ~[flyway-core6.0.8.jar:?]
...
Caused by: java.io.IOException: 未預期的資料包型別。0:java.io.IOException: Unexpected packet type: 0
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2390) ~【postgresql-42。 2.9.jar:42.2.9]
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:310) ~【postgresql-42. 2.9.jar:42.2.9]
... 147 more
有誰見過這種情況,知道如何解決嗎?
uj5u.com熱心網友回復:
我以前沒有見過這個錯誤,但據我所知,你應該可以通過簡單地呼叫getClob("parameters")
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/309835.html
標籤:
上一篇:自定義查詢不使用引數
下一篇:一個.NETEF存盤庫模式
