MYSQL secure-file-priv は空白に設定されていますが、DbDataReader ExecuteReader を実行すると、空白ではないかのように動作します。
P粉794851975
2023-09-02 09:46:46
<p>.ini ファイルに secure-file-priv="" を設定しました
MySQL WorkBench で SQL ブロックを実行すると、完璧に実行されます。 </p>
<p>しかし、C# が実際に DbDataReader ExecuteReader を実行すると、エラーが発生します。 <strong>このエラーはファイルが存在しないことを示していますが、これはデフォルトのパス (「'C:\ProgramData\MySQL\MySQL Server 8.0\Data」) がパスの先頭に追加されるためです< /strong> ;
(コマンドテキストは以下の SQL とまったく同じです)</p>
<p>有効な文字列の例</p>
<pre class="brush:php;toolbar:false;">データ INFILE '_FILEPATH.txt_' をテーブル tablename にロードします フィールドは '\t' で終了します 行は '\n' で終了します 1 行を無視します (xxx, yyy, zzz)</pre>
<p>Reader の実行後にエラーが返されました。セクションが追加されました</p>
<ブロック引用>
<p>MySqlException: ファイル 'C:\ProgramData\MySQL\MySQL Server
8.0\Data\DBNAME_FILEPATH.txt_' が見つかりません (OS エラー 2 - そのようなファイルまたはディレクトリはありません)</p>
</blockquote>
<p>「C:\ProgramData\MySQL\MySQL Server」を含めたくない<strong>
8.0\Data\DBNAME"</strong>、なぜこれが起こっているのかわかりません。助けていただければ幸いです。</p>
これは、なぜ奇妙な動作をするのかという私の質問に対する答えではありません。 ただし、別のアプローチ (Load-Infile を実行すること) を使用して問題を解決しました。
dbdatareader を使用する代わりに、MySQL クライアント - MySQL Bulk Loader を使用することにしました
リーリーということで、質問に対する答えをまだ知りたいのですが、これは私にとってはうまくいきました。