ローカル環境でJavaを実行すると、以下のようなMySQLのエラーが出るんです。
Javaで大き目のSQL文を発行すると、ローカル環境ではかなりの確率で発生するのに対し、テスト環境では何ともないので、「う〜ん…(T_T)丿」と悩みました。
じっくり動作を観察していると、MySQLはちょっと重めのSQL文を発行する際に、TEMPフォルダに一時ファイルの作成/削除を繰り返しながら、作業をしている様子。
さらに調べて行くと、どうもウィルス対策ソフトがチェックの為に、TEMPフォルダに作成された一時ファイルの削除を、一瞬遅らせてしまうらしい。
つまり、一時ファイルの削除が遅れることによって、「同名のファイルが既に存在するためcreate出来ません」と言う意味でのエラーが発生しているのではないか、という結論に至りました。
そう言えば、テスト環境には、ウィルス対策ソフトをインストールしてないし…。
んで、McAfee の「オンアクセススキャン」を無効にした所、エラーが出なくなりました。
McAfeeを使われているのであれば、「オンアクセススキャン」の対象外に、MySQLのtmpdirのパスか、拡張子「MYD」「MYI」を指定しても良いかと思われます。
(拡張子の意味)
.MYD…データを保存するファイル
.MYI…インデックスを保存するファイル
.frm…テーブル定義が記述されているファイル
(MySQLのエラー)
java.sql.SQLException: Can't create/write to file 'C:\WINDOWS\TEMP\#sql_8b8_0.MYD' (Errcode: 13)
java.sql.SQLException: Can't create/write to file 'C:\WINDOWS\TEMP\#sql_8b8_0.MYI' (Errcode: 13)
java.sql.SQLException: Can't create/write to file 'C:\WINDOWS\TEMP\#sql_8b8_0.MYD' (Errcode: 13)
java.sql.SQLException: Can't create/write to file 'C:\WINDOWS\TEMP\#sql_8b8_0.MYI' (Errcode: 13)
Javaで大き目のSQL文を発行すると、ローカル環境ではかなりの確率で発生するのに対し、テスト環境では何ともないので、「う〜ん…(T_T)丿」と悩みました。
じっくり動作を観察していると、MySQLはちょっと重めのSQL文を発行する際に、TEMPフォルダに一時ファイルの作成/削除を繰り返しながら、作業をしている様子。
さらに調べて行くと、どうもウィルス対策ソフトがチェックの為に、TEMPフォルダに作成された一時ファイルの削除を、一瞬遅らせてしまうらしい。
つまり、一時ファイルの削除が遅れることによって、「同名のファイルが既に存在するためcreate出来ません」と言う意味でのエラーが発生しているのではないか、という結論に至りました。
そう言えば、テスト環境には、ウィルス対策ソフトをインストールしてないし…。
んで、McAfee の「オンアクセススキャン」を無効にした所、エラーが出なくなりました。
McAfeeを使われているのであれば、「オンアクセススキャン」の対象外に、MySQLのtmpdirのパスか、拡張子「MYD」「MYI」を指定しても良いかと思われます。
(拡張子の意味)
.MYD…データを保存するファイル
.MYI…インデックスを保存するファイル
.frm…テーブル定義が記述されているファイル