[前][次][番号順一覧][スレッド一覧]

mysql:16186

From: "yoku ts." <"yoku ts." <yoku0825@xxxxxxxxxx>>
Date: Sun, 14 Dec 2014 23:35:12 +0900
Subject: [mysql 16186] Re: [mysql 16185] 高速に「INTO OUTFILE → File.Delete → 繰り返し」でエラー(already exists:1086)となります。

こんばんは、yoku0825といいます。

原因ぽいものは全くわからないのですが、

> ---検証内容---

> ・VS2012でのデバッグ時に、ステップ実行でも発生。

> ・File.Delete→INTO OUTFILEの間に、Sleepを5秒挟んだりしても発生する。


これは ファイルが存在している(?)にも拘わらずFile.ExistsがTRUEで抜けてくるのが問題だと思うので、
スリープを挟むとしたらINTO OUTFILEとFile.Delete(File.Exists)の間がいいのでははないでしょうか?

1. ファイルの存在チェック
2. 存在したら消す
3. SELECT .. INTO OUTFILE ..
-- ここでブレーク --
4. ファイルの存在チェック
5. 存在したら消す
6. SELECT .. INTO OUTFILE ..

ブレークした時に、OSから見てもファイルが存在するのにFile.ExistsがFALSEになるのであれば
オブジェクトを使いまわしていないか(File.DeleteしたあとのFileオブジェクトが何を返すのかとか)とか、
OSから見てファイルがまだ存在しないのなら、mysqldのスタックなど見てみるといいのかもしれません。
5.0も5.6もselect_export::prepareの割と早い段階でcreate_fileを呼んで(ファイルだけ先行して作成される)いるので、
そこは変わらないような気がするのですが。。


yoku0825,


2014年12月12日 14:22 志澤 敦 <atsushi.shizawa@xxxxxxxxxx>:
>

> 志澤と申します。

> 初めて投稿させて頂きます。

>

> MySQLWindowsのケースは少ないかとも思いますが、

> お心あたり御座いましたら、ご頂けると幸いです。

>

> ---環境---

> OS :Windows2012 Std(Memory24GB)

> DB :MySQL 5.6.21

> Coccector :Net 6.9.5

> FrameWork :.NET FrameWork 4.5

> IDE :VS2012 Pro

>

> ---事象---

> ・同一ファイルパスにおいて、INTO OUTFILE →File.Deleteを高速に行うと、

> IF(File.Exists==TRUE){File.Delete}が機能せず、

> SQL発行時にMySqlExceptionが発生。

>

> ・エラー内容は、「1086:already exists」

>

> ・その際、OS上にもファイルは残っており、通常のファイルとして読み書きが出 来る状態。

>

> ---検証内容---

> ・VS2012でのデバッグ時に、ステップ実行でも発生。

> ・File.Delete→INTO OUTFILEの間に、Sleepを5秒挟んだりしても発生する。

> ・Win2008R2でも同様に発生。

> ・CentOSでも同様に発生。

> ・MySQL5.5でも同様に発生。

> --例外事象--

> ・MySQL5.0では発生しない。

>

>

> 以上となります。

> DBというより、ConnectorやOS由来な気もしておりますが、

> 何か情報御座いましたら、ご助言の程を何卒お願い致します。

>

>


添付ファイル

[前][次][番号順一覧][スレッド一覧]

     16185 2014-12-12 14:22 [志澤 敦 <atsushi.shi] 高速に「INTO OUTFILE → File.Delete → 繰り返し」でエラー(already exists:1086)となります。
-> @ 16186 2014-12-14 23:35 ┗["yoku ts." <yoku0825] Re: [mysql 16185] 高速に「INTO OUTFILE → File.Delete → 繰り返し」でエラー(already exists:1086)となります。
   @ 16187 2014-12-15 15:57  ┗[志澤 敦 <atsushi.shi] Re: 高速に「INTO OUTFILE → File.Delete → 繰り返し」でエラー(already exists:1086)となります。
   @ 16188 2014-12-15 18:32   ┗["yoku ts." <yoku0825] Re: [mysql 16187] Re: 高速に「INTO OUTFILE → File.Delete → 繰り返し」でエラー(already exists:1086)となります。
     16189 2014-12-15 21:20    ┗[HIRATSUKA Sadao <sh2] Re: 高速に「INTO OUTFILE  → File.Delete  → 繰り返し」でエラー(already exists:1086)となります。
     16195 2014-12-17 16:58     ┗["atsushi.shizawa" <a]