Windows10でも、PC-KEIBAでMySQLにデータ蓄積できた件
要旨
System.OutOfMemoryExceptionはアプリを落として立ち上げなおすと治る。
筆者環境
- Windows10 Pro
- CPU i7 32GB RAM
- JRA-VAN Data Labのトライアルキットを利用したフルセットアップ
既存ソフトのOS対応にWin10がない
ほとんどのSQLデータ蓄積系ソフトの対応OSがWindows7, Vista, 8ぐらいまでで、唯一 JVData to SQLiteというソフトだけはWin10対応なのですが、まだバージョンが1.0.2で、実装されていないテーブル(マスタ)があるので出来れば完全なデータのものを利用したいと考えました。
(開発は陰ながら応援しております。)
そこで、Every-DBやPC-KEIBAをWindows10環境でも利用できないかと試したところ、普通にやると途中でエラー
System.OutOfMemoryException
が出て続行不可能になりました。
原因は?
System.OutOfMemoryExceptionはメモリ割り当てに失敗するとスローされるエラーなので、SQLで大量に大きい処理を行うことでのメモリ不足が考えられます。
例外のトラブルシューティング : System.OutOfMemoryException
票数1の取得で起きやすいような気がします。
解決法は?
僕がとった解決法としては、単純にアプリをいったん閉じて再起動する。という手法です。すると強制的にメモリ解放されるので、再取得するとエラーが出たところをうまくパスしました。
成功時のキャプチャ画像。フルセットアップの最後のテーブルが馬名の由来
PC-KEIBAの掲示板では、「プログラム互換性を利用することで何とか進みました。」みたいな投稿があるのですが、プログラム互換性を変更する際に再起動をしなければいけないので、それで結果的にメモリが解放されて上手くいったのでは。と考えられます。
時間はどれくらいかかるの?
約一週間程度
計測期間: 2018/2/3 ~ 2018/2/9
注意点
- 結構頻繁にメモリ不足エラーが起きる。
ちょくちょく見ないとエラーで止まってました。みたいなのが結構あります。PowerShellからAutomationElementを使って再起動かけて取得を再開するスクリプトを作って自動化しようと思ったのですが、APIのクセの強さとドキュメントの少なさでうまくいかずに諦めました。なので、PCを時々確認するというアナログ手法で対応したました。基本的にはスクリプト対応が望ましいです。(確認するのがめんどくさいので)
- SQLへの蓄積がうまくいく事と、データ欠損があることは違う
そもそも5年ほどアップデートが行われていないソフトなので、JRA-VAN Datalabの仕様変更などによる問題。ソフトそのものに生じた問題はそのままなので、データ欠損があったりして結局使えない可能性はあります。
- 出走別着度数のセットアップ中に別のエラーに遭遇
同様に再起動によって解決しました。
最後に
どうしてもダメならスクラッチでSQL保存ソフトを作る計画まで立てていたのですが、とりあえずは何とかなりそうな感じです。データの中身を見た結果をまた記事にしてみます。