导库时发现了两个mysql问题

来源:芽雨快跑  时间: 2007-08-29 21:22:50  浏览: 44876 次  评论: 1 篇  
Tags : mysql  

由于准备重新架构网站,涉及到数据备份问题,问题由此引发。

第一个:

由wyaj的phpmyadmin导出的数据在偶机子上导入时老是提示有臭虫,大意是什么二进制、引号之类的问题。还以为是数据存在大量单双引号出现的问题,于是便写程序自己把数据导出来再导进去。提示依旧。

突然感觉这个问题以前也似乎出现过。于是"set names gb2312"、"set names gbk"、"set names utf8"之类的命令一个一个的试。结果还是很无语。

也不知道是使用什么方法处理了一下,发现终于出了一个又很熟悉的错误:"ERROR 1406 : Data too long for column xxx"。顿时觉悟了。

当初抱着严格要求自己写sql语句的目的,把mysql设置为"STRICT_TRANS_TABLES"。于是便引发了这个问题,还害得偶自己写程序去导数据。

解决方法:

sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"把其中的"STRICT_TRANS_TABLES,"去掉,然后重启mysql就ok了。

第二个:

自己写了一个mysql操作类,里面对操作的错误做了报警。其中里面有:
$this->affectNum = mysql_num_rows($this->queryId) or .......;
$this->affectNum = mysql_affected_rows($this->queryId) or .......;

问题又出来了,当返回的值是0的时候,也会执行"or"后面的语句。当时百思不得其解,幸好有里面的纯属误会指点,叫偶查手册才明白,上面两个函数的返回值是int。顺便指出偶程序中的bug:为了防止未知的意外情况,在使用foreach之前,一定要 is_array()!

哎,这都是很基础的问题。

朋友的回复:
呢称:ilsanbao  个人主页:http://www.xinqdian.com  时间: 2007-08-30 09:50:48
多写些开发经验我也学习学习啊
要不您也来写一写?
© 2004 - 2017 芽雨快跑 - 本页面所有内容,未经芽雨许可,欢迎转载,请注明出处

京ICP备09017802号