バックアップが取得できない。(Unknown column 'POLLID' in 'field list')
作成日:2015年12月2日 | 更新日:2015年12月21日
【現象/要望】
「Unknown column 'POLLID' in 'field list'」というエラーが発生し、バックアップが取得できない。(MySQL)
※下記修正パッチは適用済み。
https://www.manageengine.jp/support/kb/OpManager/?p=3227
[11-15-2015]|[19:04:14:963]|[SEVERE] :
jdbc.BackupException: Error writing data to file.
at jdbc.BackupDB.dumpDataToFile(BackupDB.java:157)
at jdbc.AbstractBackupDB.backupDB(AbstractBackupDB.java:89)
at jdbc.AbstractBackupDB.doBackup(AbstractBackupDB.java:450)
at jdbc.BackUpImpl.backupDB(BackUpImpl.java:81)
at jdbc.BackUpImpl.main(BackUpImpl.java:219)
Caused by: java.util.concurrent.ExecutionException: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Unknown column 'POLLID' in 'field list'
at java.util.concurrent.FutureTask$Sync.innerGet(Unknown Source)
at java.util.concurrent.FutureTask.get(Unknown Source)
at jdbc.BackupDB.dumpDataToFile(BackupDB.java:154)
... 4 more
Caused by: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Unknown column 'POLLID' in 'field list'
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3277)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3206)
at com.mysql.jdbc.Statement.executeQuery(Statement.java:1232)
at jdbc.BackupDB$BackupDataThread.dumpDataAsPgSqlFormat(BackupDB.java:459)
at jdbc.BackupDB$BackupDataThread.dumpData(BackupDB.java:255)
at jdbc.BackupDB$BackupDataThread.call(BackupDB.java:220)
at jdbc.BackupDB$BackupDataThread.call(BackupDB.java:191)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source) [11-15-2015]|[19:04:14:963]|[FINE] : Backup finished on : 11-15-2015 at 19:04:14:963
[11-15-2015]|[19:04:14:963]|[FINE] : ******************* Backup DB Completed ***********************
【原因】
アップグレードに失敗している可能性がございます。
【解決方法】
以下の手順を実施します。
※以下の手順実施前に、不慮の事故に備え以下のナレッジをご参照の上、
バックアップの取得をお願い致します。
https://www.manageengine.jp/support/kb/OpManager/?p=69
手順)
1. OpManagerサービスを停止。
2. コマンドプロンプトを管理者として起動。
3. OpManagerインストールディレクトリ/binに移動。
4. startMySQL.batを実行。
5. 別のコマンドプロンプトを管理者として起動し、インストールディレクトリ/mysql/binに移動。
6. 以下のコマンドを実行。
mysql -u root -P 13306 opmanagerdb
7. 次のクエリを実行。
select ARCHIVETABLENAME from metatable where LOOKUPTABLENAME='Event';
以下のように表示されます。
+---------------------+
| ARCHIVETABLENAME |
+---------------------+
| Event_2015_12_07_09 |
| Event_2015_12_04_22 |
| Event_2015_12_27_16 |
+---------------------+
表示されたテーブル名をメモします。
例)
Event_2015_12_07_09
Event_2015_12_04_22
Event_2015_12_27_16 等
8. 次のクエリを実行します。
desc Event_<日付>;
例)
desc Event_2015_12_07_09;
desc Event_2015_12_04_22;
desc Event_2015_12_27_16;
念のため、実行結果をテキストファイルにコピーし、
問題が解決しなかった場合に送付していただけますでしょうか。
9. 上記手順8のクエリで「Field」カラムに「POLLID」がないテーブルをメモします。
例)
Event_2015_12_07_09
Event_2015_12_04_22
10. 「POLLID」がないテーブルに対し、次のクエリを実行します。
ALTER TABLE Event_<日付> ADD COLUMN POLLID BIGINT DEFAULT -1 NOT NULL ;
例)
ALTER TABLE Event_2015_12_07_09 ADD COLUMN POLLID BIGINT DEFAULT -1 NOT NULL ;
ALTER TABLE Event_2015_12_04_22 ADD COLUMN POLLID BIGINT DEFAULT -1 NOT NULL ;
11. 手順10のクエリ後のテーブルの状態を確認するため、再度手順8と同様のクエリを実行します。
desc Event_<日付>;
例)
desc Event_2015_12_07_09;
desc Event_2015_12_04_22;
desc Event_2015_12_27_16;
念のため、実行結果をテキストファイルにコピーし、
問題が解決しなかった場合に送付していただけますでしょうか。
12. 以下のクエリを実行します。
desc Alert;
desc Event;
「Field」カラムに「POLLID」がないテーブルを確認します。
※以下のようなエントリがある場合、手順13は実行する必要はございません。
+------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------+--------------+------+-----+---------+-------+
(前省略)
| POLLID | bigint(20) | NO | | -1 | |
+------------------+--------------+------+-----+---------+-------+
13. 「POLLID」がないテーブルに対し、次のクエリを実行します。
Alert テーブルに「POLLID」カラムがない場合)
ALTER TABLE Alert ADD COLUMN POLLID BIGINT DEFAULT -1 NOT NULL;
Event テーブルに「POLLID」カラムがない場合)
ALTER TABLE Event ADD COLUMN POLLID BIGINT DEFAULT -1 NOT NULL;
14. \qでデータベースの接続を切断。
15. インストールディレクトリ/binに移動。
16. stopMySQL.batを実行。
17. タスクマネージャにてmysqld-ntプロセスが停止したことを確認。
18. 以下の手順でデバッグパッチを適用します。
デバッグパッチ適用手順)
- OpManagerを停止していることを確認します。
mysqld-nt, java, wrapperプロセスが残存していないことを確認します。 - OpManager\logs, OpManager\tomcat\logsフォルダをリネームします。
※ログを含むlogsフォルダをリネームすることで事象再現時のみのログを取得可能となります。なお、OpManager起動時に自動で新しいlogsフォルダが作成されます。) - OpManager\classes\jdbcフォルダがあれば、jdbc-old等にリネームします。
- Backup_Issue_MySql_to_Pgsql_Debug_11600.zipを展開し、OpManager\フォルダ配下に配置します。
配置後のパスは以下の通りです。
OpManager\classes\jdbc\..... - 以下のコマンドを使用し、デバッグモードにてバックアップファイルを取得します。
BackupDB.bat -targetDB pgsql -threads 1 -debug - コマンドプロンプトに表示されたログとOpManager\backup\Backup_Mysql_<日付等>_11600.txtを送付いただけますでしょうか。
- 手順4にて配置したOpManager\classes\jdbcフォルダを削除します。
- 手順3にてリネームしたjdbc-oldをjdbcにリネームします。
- mysqld-nt, java, wrapperプロセスが残存していないことを確認後、OpManagerを起動します。
19. バックアップを取得します。
正常にバックアップが取得できることを確認します。
取得できなかった場合、以下の資料を送付いただけますでしょうか。
1) 手順8にて取得いただいたクエリ実行結果
2) 手順11にて取得いただいたクエリ実行結果
【対応リリース】 x.x
★-----------------------------------------------------------------------------★
OpManager 製品紹介ページはこちら ↓
https://www.manageengine.jp/products/OpManager/
★-----------------------------------------------------------------------------★