1. 程式人生 > 實用技巧 >C# 連線mysql填坑

C# 連線mysql填坑

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, string
tableName, 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; } }

專案使用框架太老,就導致用的東西太老了。