mysql odbc 连接中断的解决

最近一个项目需要用到MySQL数据库,MySQL平时用得不多,之前是用ODBC连接的,倒也没什么大问题,这次依然用ODBC,但在部署时问题来了:


因为系统要通过循环导入数据,所以对数据库的访问非常密集,服务器总在执行到2万条时出现“不能连接...”的错误提示,重新启动后又可以连接,


怀疑是MySQL的性能承受能力有限,所以在每条加插入语句后加了Thread.Sleep,情况有所好转,但始终不能从根本上解决。


突然有一天想起更换驱动,改用MySQLClinet来连接,结果仍然是出现不能连接。看到下从网上下载的MySQLClient的代码,发现每次执行语句都要重新创建一个连接,这个写法一开始没有注意,因为常用的SqlHelper也是这样写的,但后来仔细回忆了下,SqlServer的连接是有连接池的,即在代码里关闭了连接,但连接池中的连接资源并没有立即释放,所以频繁关闭、创建不会有问题,但MysqlClient不一定实现了这样的机制,所以将代码改为只创建一个连接,不管循环多少次,都使用这一个连接。这样连接再也不出问题了!


另外再说下,用odbc也试过用单个连接,不好使。在odbc下似乎存贮过程也不能使用


关于MySqlClinet的连接还有两个地方要注意:

在连接串中要加入“ User Variables=True;Character Set=gbk”,这可确保能在sql语句中使用变量,还有插入的中文不出现乱码。

完整的连接如:

Data Source=127.0.0.1;database=XXXX; user id=; Password=; Allow User Variables=True;Character Set=gbk



你可能感兴趣的:(数据库,锁,mssql,mysql,odbc,乱码,连接中断)