Migration from Oracle to Postgres fails with—Protocol violation: [ 14, 116, ]

お困りですか?

アトラシアン コミュニティをご利用ください。

コミュニティに質問

要約

A database migration from Oracle to PostgreSQL could fail with the following errors preventing the migration from succeeding.

問題

Database migration from Oracle to Postgres fails and the following is found in the atlassian-fisheye-YYYY-MM-DD.log:

2020-08-08 14:00:45,688 ERROR [ThreadPool1 ] fisheye DBEditHelper-doGet - Database migration failed: java.sql.SQLException: Protocol violation: [ 14, 116, ]
java.sql.SQLException: Protocol violation: [ 14, 116, ]
    at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:669) [ojdbc7-12.1.0.1.jar:12.1.0.1.0]
    at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:249) [ojdbc7-12.1.0.1.jar:12.1.0.1.0]
    at oracle.jdbc.driver.T4C8TTIClob.read(T4C8TTIClob.java:245) [ojdbc7-12.1.0.1.jar:12.1.0.1.0]
    at oracle.jdbc.driver.T4CConnection.getChars(T4CConnection.java:3901) [ojdbc7-12.1.0.1.jar:12.1.0.1.0]
    at oracle.sql.CLOB.getChars(CLOB.java:517) [ojdbc7-12.1.0.1.jar:12.1.0.1.0]
    at oracle.sql.CLOB.getSubString(CLOB.java:354) [ojdbc7-12.1.0.1.jar:12.1.0.1.0]
    at oracle.jdbc.driver.ClobAccessor.getString(ClobAccessor.java:454) [ojdbc7-12.1.0.1.jar:12.1.0.1.0]
    at oracle.jdbc.driver.GeneratedStatement.getString(GeneratedStatement.java:327) [ojdbc7-12.1.0.1.jar:12.1.0.1.0]
    at oracle.jdbc.driver.GeneratedScrollableResultSet.getString(GeneratedScrollableResultSet.java:882) [ojdbc7-12.1.0.1.jar:12.1.0.1.0]
    at com.atlassian.crucible.migration.item.DBExporter$OracleColumnExporter.export(DBExporter.java:271) [fisheye.jar:?]
    at com.atlassian.crucible.migration.item.DBExporter.exportRow(DBExporter.java:361) [fisheye.jar:?]
    at com.atlassian.crucible.migration.item.DBExporter.exportTable(DBExporter.java:164) [fisheye.jar:?]
    at com.atlassian.crucible.migration.item.DBExporter.exportData(DBExporter.java:103) [fisheye.jar:?]
    at com.atlassian.crucible.actions.admin.database.DBEditHelper$ExportRunner.call(DBEditHelper.java:120) [fisheye.jar:?]
    at com.atlassian.crucible.actions.admin.database.DBEditHelper$ExportRunner.call(DBEditHelper.java:99) [fisheye.jar:?]
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_252]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [?:1.8.0_252]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [?:1.8.0_252]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_252]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_252]
    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_252]

And

2020-08-08 14:00:45,972 ERROR [ThreadPool1 ] fisheye DBEditHelper-doGet - Database migration failed: com.cenqua.crucible.hibernate.CruDBException: Problem with constraints script <FISHEYE_HOME>/sql/POSTGRESQL/schema/constraints_108.sql
com.cenqua.crucible.hibernate.CruDBException: Problem with constraints script <FISHEYE_HOME>/sql/POSTGRESQL/schema/constraints_108.sql
    at com.cenqua.crucible.hibernate.DefaultDBControl.addConstraints(DefaultDBControl.java:377) [fisheye.jar:?]
    at com.atlassian.crucible.migration.item.DBImporter.importData(DBImporter.java:145) [fisheye.jar:?]
    at com.atlassian.crucible.actions.admin.database.DBEditHelper$ImportRunner.call(DBEditHelper.java:91) [fisheye.jar:?]
    at com.atlassian.crucible.actions.admin.database.DBEditHelper$ImportRunner.call(DBEditHelper.java:73) [fisheye.jar:?]
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_252]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [?:1.8.0_252]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [?:1.8.0_252]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_252]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_252]
    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_252]
Caused by: com.cenqua.crucible.hibernate.CruDBException: SQL script error on line 4: "alter table cru_comment add constraint FKE5A1D10674DF349C foreign key (cru_reply_to_comment_id) references cru_comment;" 
    (ERROR: insert or update on table "cru_comment" violates foreign key constraint "fke5a1d10674df349c"
      Detail: Key (cru_reply_to_comment_id)=(418841) is not present in table "cru_comment".), please contact http://www.atlassian.com/support/
    at com.cenqua.crucible.hibernate.DefaultDBControl.executeScript(DefaultDBControl.java:595) [fisheye.jar:?]
    at com.cenqua.crucible.hibernate.DefaultDBControl.executeScript(DefaultDBControl.java:524) [fisheye.jar:?]
    at com.cenqua.crucible.hibernate.DefaultDBControl.addConstraints(DefaultDBControl.java:371) [fisheye.jar:?]
    ... 9 more
Caused by: org.postgresql.util.PSQLException: ERROR: insert or update on table "cru_comment" violates foreign key constraint "fke5a1d10674df349c"
      Detail: Key (cru_reply_to_comment_id)=(418841) is not present in table "cru_comment".
    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2468) [postgresql-42.2.6.jar:42.2.6]
    at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2211) [postgresql-42.2.6.jar:42.2.6]
    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:309) [postgresql-42.2.6.jar:42.2.6]
    at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:446) [postgresql-42.2.6.jar:42.2.6]
    at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:370) [postgresql-42.2.6.jar:42.2.6]
    at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:311) [postgresql-42.2.6.jar:42.2.6]
    at org.postgresql.jdbc.PgStatement.executeCachedSql(PgStatement.java:297) [postgresql-42.2.6.jar:42.2.6]
    at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:274) [postgresql-42.2.6.jar:42.2.6]
    at org.postgresql.jdbc.PgStatement.executeUpdate(PgStatement.java:246) [postgresql-42.2.6.jar:42.2.6]
    at com.cenqua.crucible.hibernate.DefaultDBControl.executeScript(DefaultDBControl.java:566) [fisheye.jar:?]
    ... 11 more

診断

環境

Your Fisheye 4.8.X instance is configured to use Oracle ojdbc7.jar version 12.1.0.1 to connect to Oracle 12c Database.

原因

This issue is caused by the JDBC driver ojdbc7 version 12.1.0.1, while reading a clob data of length 4193 that is selected from a table in a UTF-8/AL32UTF8 Oracle database.



ソリューション

Update the JDBC driver to ojdbc8-12.2.0.1

  1. Download the ojdbc8-12.2.0.1 driver;
  2. Move the driver to <FISHEYE_INST>/lib (Create the folder if it doesn't exist);
  3. Restart the application;
  4. Try the database migration again.

Additional information on how to perform a database migration to PostgreSQL can be found at article below

Migrating to PostgreSQL






最終更新日 2020 年 9 月 12 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.