MYSQL secure-file-priv 設定為空白,但是當執行 DbDataReader ExecuteReader 時,它的行為就像不是
P粉794851975
P粉794851975 2023-09-02 09:46:46
0
1
486
<p>我已在 my.ini 檔案中設定 secure-file-priv="" 如果我在 MySQL WorkBench 中執行 SQL 區塊,它會完美運行。 </p> <p>但是,當 C# 實際執行 DbDataReader ExecuteReader 時,我收到一個錯誤。 <strong>錯誤告訴我該檔案不存在,但這是因為它在路徑的開頭附加了預設路徑(“'C:\ProgramData\MySQL\MySQL Server 8.0\Data”)< /強> (指令文字與下面的SQL完全相同)</p> <p>有效的字串範例</p> <pre class="brush:php;toolbar:false;">LOAD DATA INFILE '_FILEPATH.txt_' INTO TABLE tablename FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' IGNORE 1 LINESyyy,yyy, zzz)</pre> <p>執行 Reader 之後傳回的錯誤,現在加入了部分</p> <blockquote> <p>MySqlException:檔案'<strong>C:\ProgramData\MySQL\MySQL Server 8.0\Data\DBNAME</strong>_FILEPATH.txt_' 找不到(作業系統錯誤 2 - 沒有此類檔案或目錄)</p> </blockquote> <p>我不希望它包含<strong>「C:\ProgramData\MySQL\MySQL Server 8.0\Data\DBNAME"</strong>,我不明白為什麼會這樣。任何幫助將不勝感激!</p>
P粉794851975
P粉794851975

全部回覆(1)
P粉384244473

這不是我的問題的答案,為什麼它會做一些奇怪的事情。 不過,我使用不同的方法解決了我的問題(透過執行 Load-Infile)。

我選擇使用 MySQL 用戶端 - MySQL Bulk Loader,而不是使用 dbdatareader

string connectionString = Context.Database?.GetDbConnection().ToString();
        connectionString = "MY_CON_STRING"


        using (MySql.Data.MySqlClient.MySqlConnection connection = new MySql.Data.MySqlClient.MySqlConnection(connectionString))
        {
            connection.Open();
            MySql.Data.MySqlClient.MySqlBulkLoader loader = new MySql.Data.MySqlClient.MySqlBulkLoader(connection);
            loader.TableName = "TABLENAME";
            loader.FieldTerminator = "\t";
            loader.LineTerminator = "\r\n";
            loader.NumberOfLinesToSkip = 1;
          
            // skip header row 
            loader.FileName = filePath;
            int rowsInserted = loader.Load();
            connection.Close();
        }

所以,雖然我仍然想知道我的問題的答案,但這對我有用。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!