由于准备重新架构网站,涉及到数据备份问题,问题由此引发。
第一个:
由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()!
哎,这都是很基础的问题。
多写些开发经验我也学习学习啊
by ilsanbao 2007-08-30 09:50:48