C# 連線mysql填坑
阿新 • • 發佈:2020-08-11
1,vs2013 使用 MySqlConnector1.0.0.0 ,mysql版本8.0
2,連線地址:string myConnectionString = "server=192.168.1.0;uid=root;pwd=pwd;database=test;AllowLoadLocalInfile=true;Connect Timeout=300";
坑1:本地連線遠端資料庫,沒有問題,上了生產就連不上。報錯Expected to read 4 header bytes but only received 0,參考連線:https://github.com/mysql-net/MySqlConnector/issues/540
設定連線時間:
SHOW GLOBAL VARIABLES LIKE '%timeout%';
SET GLOBAL connect_timeout = 300;
坑2:使用這個外掛做批處理,需要在客戶端設定 AllowLoadLocalInfile=true;服務端設定
SHOW GLOBAL VARIABLES LIKE 'local_infile';
SET GLOBAL local_infile = 'ON';
下面的程式碼是使用該 DLL 的批處理功能
public static async Task SqlBulkInsert(DataTable dt, stringtableName, string connStr) { try { using (var conn = new MySqlConnection(connStr)) { try { conn.Open(); var bulkCopy = new MySqlBulkCopy(conn); bulkCopy.DestinationTableName= tableName; bulkCopy.WriteToServer(dt); } finally { if (conn.State != ConnectionState.Closed) { conn.Close(); } } } } catch (Exception ex) { throw ex; } }
專案使用框架太老,就導致用的東西太老了。