导库时发现了两个mysql问题
发布于 2007-08-29 21:22 1 阅读:46,173 评论:1 标签: 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()!

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

这不基础了是经验

多写些开发经验我也学习学习啊

by ilsanbao 2007-08-30 09:50:48
Warning: Trying to access array offset on value of type bool in /opt/bitnami/apache/htdocs/workingsmarty/templates_c/e21e83752348f01f75c472238af0e4512d51cc32_0.file.left_look.html.php on line 154

Warning: Trying to access array offset on value of type bool in /opt/bitnami/apache/htdocs/workingsmarty/templates_c/e21e83752348f01f75c472238af0e4512d51cc32_0.file.left_look.html.php on line 172