MySql多线程 我在C++下面使用多线程对数据库进行大量数据的插入时,发生数据丢失的情况,C++中多线程是有锁控制的,但是MySql中就不是很清楚是如何控制的。如何可以将MySql中的表格进行锁定呢? 比方说在一个线程在对数据库进行操作的时候,避免另一个线程的操作呢?是使用锁定吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 比方说在一个线程在对数据库进行操作的时候,避免另一个线程的操作呢? -------------------------------------------------如果你非要这样的话,则“lock table tb_name write; unlock tables”这样的话,感觉你用多线程是多余了的吧?mysql内部自动有锁机制,你说的数据丢失,可能是死锁或超时引起的吧,建议你在c下抓下错误日志看看。 你可以用 lock tables mytable WRITE 来锁定表。 我查了了,最后跟到得是在mysql_real_query(m_myConnection, SQL.c_str(),SQL.length())的时候出错的,而且在执行1000次的时候就会出现5次这样的错误。错误编号:mysql_errno(m_myConnection) = 1064(存在特殊的不合法的符号),我还是断定在执行mySql的时候因为执行两条Sql语句的时候出现干扰问题造成的。应该还是因为线程锁定的问题。 检查一下你的MYSQL的错误日志和普通日志,看一下你传到MYSQL服务器端的SQL语句到底是什么。 mysql的1064的错误,那是语法的错误造成的,并不是你所说的什么锁你抓取下这个错误的语句看看吧 没有,我传入的全部都是一样的值,即使标号出错也是全部都错啊,但是也就是1000条相同的sql语句中出现别那么5条左右,我想会不会是因为Mysql执行的时候发生紊乱,但是我现在将每条语句执行之后sleep(1000),休眠1s之后还是出错。还是没有执行成功。why? 怀疑是你网络转输上的问题。只在检查了你的日志才能确认MYSQL服务端到底收到的是什么。 那就符合了上面所说的mysql的1064的错误,那是语法的错误造成的 如何解决服务器死机问题 sql查询,进来解下惑 mysql 一张表最大的存储空间是多大啊? 两个查询语句,想合成一张表但没成功,郁闷! 获得mysql数据表名称 MySQL下如何得到网络上远程计算机的磁盘空间信息? 连接mysql的问题,很困惑。 再问一遍,为什么我的mysql无法启动 求助——MySQL 触发器问题 在2000nt里怎么使用MySQL SERVER?还有怎么安装? 升级mysql4.1升级到5.0 初来到MySQL先散分,希望各位兄弟姐妹多多帮忙啊
-------------------------------------------------
如果你非要这样的话,则“lock table tb_name write; unlock tables”
这样的话,感觉你用多线程是多余了的吧?mysql内部自动有锁机制,你说的数据丢失,可能是死锁或超时引起的吧,建议你在c下抓下错误日志看看。
你抓取下这个错误的语句看看吧
那就符合了上面所说的mysql的1064的错误,那是语法的错误造成的