-
2005-09-09
mysql client API tips - [工作学习]
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
参考mysql开发者网站:http://dev.mysql.com/doc/mysql/en/ 里面包括所有client api说明。 (一)mysql_free_result 1,mysql_free_result(res);调用之后必须将res置NULL,否则再次free会出错。 res=NULL; 2,mysql_free_result(res);调用两次也会出错。 3,res=NULL; mysql_free_result(res);此时调用不会出错。 (二)多线程导致的CR_COMMANDS_OUT_OF_SYNC 在多线程环境中,如果threadA负责写入数据,threadB负责读取数据,就可能造成out of sync的错误,从而导致mysql client崩溃。 threadA: GetData(xx); mysql_query(sock,"insert XX.."); threadB: mysql_query(sock,"select * from tbY"); res=mysql_store_result(...); while( row=mysql_fetch_row(...) ) { ...; } mysql_free_result(res); 如果此时threadB运行在调用mysql_store_result(..)后调用mysql_free_result(res)前,而此时如果threadA调用mysql_query就会导致out of sync错误。 所以必须采取同步措施: pthread_mutex_lock(&mut); mysql_query(..) mysql_store_result(..); mysql_free_result(..); pthread_mytex_unlock(&mut); (三)Lost connection to MySQL server during query 1,glibc存在bug。 2,将mysql的timeout设置长一点。 一般来说,如果不是在代码中主动调用mysql_close()关闭连接,此种错误并不太影响程序的运行,再次执行一次一般就恢复连接了。 (四)mysql表的备份 mysql>select * from tb1 into OUTFILE ’/var/lib/mysql/数据库名/tb1.backup’; mysql>delete from tb1; mysql>select * from tb1; mysql>load data local INFILE ’/var/lib/mysql/数据库名/tb1.backup’ into Table tb1; mysql>select * from tb1; 当然也可以通过 : mysql>backup table tb1 to ’文件名’; 但是低版本不支持。 执行一个sql脚本:#mysql -u root -pxxx < script.sql
http://jimsu.yourblog.org/logs/432969.html
随机文章:
代码重构 2008-01-13spring mvc单元测试 2007-08-14hibernate3的使用 2007-03-02RTSP协议:网上看电影 2006-01-26使用GD库来绘jpg,png,gif图 2005-09-20
收藏到:Del.icio.us





