当前位置:Gxlcms > 数据库问题 > 有没有人曾告诉你,你的SQL又报错了?

有没有人曾告诉你,你的SQL又报错了?

时间:2021-07-01 10:21:17 帮助过:34人阅读

// 记录sql错误日志 private function logError($msg = "") { if (isset($this->_logfile)) { if (!$msg) { if (!mysql_errno()) { return; } $msg = "mysql_errno: " . mysql_errno() . "\nmysql_error: " . mysql_error(); } file_put_contents($this->_logfile, [ . date(Y-m-d H:i:s) . "] $msg\n", FILE_APPEND); $trace = debug_backtrace(); foreach ($trace as $call) { if(empty($call[file]) && empty($call[line])) { continue; } file_put_contents($this->_logfile, "{$call[‘file‘]} on line {$call[‘line‘]}\n", FILE_APPEND); } file_put_contents($this->_logfile, "\n", FILE_APPEND); } }  

    这样,你就有了一个可供参考的东西了,到时更改的时候,你只需去查看这个文件指示的地方,你就大概知道是什么错了,都知道什么错了,我想,要想解决问题,应该只是个时间问题了,而且是个短时间问题!

  正题二、如何解决问题?

    其实前面我已经说了,既然已经找到问题根源了,要解决问题只是个短时间问题,但是,我还是将给出一些解决方案作参考,毕竟,大家都这么忙,哪有时间破解你那烂代码!如下是一经常会出现的错误:

    1. 报错:[2002] 由于目标计算机积极拒绝,无法连接。解析:数据库连接信息错误,你可能把测试环境连接部署到线上去了,这问题大发了,赶紧恢复吧? 附注:如果没有报错是因为你线上机器可以连接测试库,那问题也大发了;

    2. 报错:[1146] Table ‘bbbq‘ doesn‘t exist。解析:表不存在,赶紧查查,是不是本次新加的表没有被添加到线上吧,或者表名写错了? 附注:一般过了测试的不太可能是表名写错了!

    3. 报错:[1054] Unknown column ‘column_x‘ in ‘field list‘。解析:指定的列不存在,要么库中没有,要么写错了,赶紧查! 附注: 同上。

    4. 报错:[1366] Incorrect string value: ‘\xA9\x96‘ for column ‘x_name‘ at row 1。解析:字符集问题,如一个gbk的字被字段设置为gb2312接收则会出现此问题,赶紧改回来吧!附注:请尽量使用utf-8编码,代码与入库都方便!

    5. 报错:[1364] Field ‘pid‘ doesn‘t have a default value。解析:指定字段没有默认值,请确认应该获取到的值是否未获取从而为null,为某些不必要字段指定数据库默认值。   附注: 如有索引关系,请一定设置not null 选项,否则索引将可能失效!

    6. 报错:[1366] Incorrect integer value: ‘‘ for column ‘townId‘ at row 1。解析:给定的值不符合字段类型要求,在入库之前先确认该字段需要什么类型,可做相应强制转换,再入库。  附注:某些版本的mysql可以自行强制转换类型处理此问题,但是结果可能已经超出你的预期!

 

  ...

  等等,还要养家糊口,赶着去上班,稍后补充!后续问题关键字提示:LOAD DATA INFILE, REPLACE ...

有没有人曾告诉你,你的SQL又报错了?

标签:

人气教程排行