MYSQL secure-file-priv 设置为空白,但是当运行 DbDataReader ExecuteReader 时,它的行为就像不是
P粉794851975
P粉794851975 2023-09-02 09:46:46
0
1
507
<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 LINES (xxx, 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学习者快速成长!