mysql常见错误

来源:互联网 发布:c4d16软件安装 编辑:程序博客网 时间:2024/06/16 02:35

本博客参考自:http://www.cnblogs.com/yougewe/p/5143961.htm

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可以自行强制转换类型处理此问题,但是结果可能已经超出你的预期;
     7. LOAD DATA INFILE ,从文件直接导入数据到数据库
      7.1. 报错:[2] File 'D:/wamp/www/a/area.csv' not found (Errcode: 2)。解析:找不到指定的csv文件,确认目录位置是否给定正确,如果正确,确认该文件是否为动态生成而目前尚未生成。  附注:小问题;
      7.2. 报错:[13] Can't get stat of '/opt/app/mysql5/var/D:/wamp/www/a/area.csv' (Errcode: 2)或者提示没有权限操作数据库。解析:数据库与web不在同一台服务器,需要指定关键字LOCAL,从而将web与数据库分开。  附注:LOCAL参数是在必要时候使用,因为不指定LOCAL的操作将看起来更安全;
      7.3. 报错:[1366] Incorrect integer value: '北京' for column 'provinceId' at row 1。解析:这里使用不指定字段的方式插入数据库,因此,如果csv文件的值顺序与数据库字段顺序不对应的话,将会有很多类似的报错,而这则是致命的,因为全部都错了,即使偶有个别正确入库的,那也是错的你也不会想要的结果,请以正确的顺序写入csv文件或者指定字段;  附注:这里的1366 与前面的1366 意义是不一样的;
      7.3. 示例LOAD:  LOAD DATA LOCAL INFILE 'D:/wamp/www/a/area.csv' REPLACE INTO TABLE `address` CHARACTER SET utf8  FIELDS TERMINATED BY ',' (`provinceId`, `provinceName`, `cityId`, `cityName`, `areaId`, `areaName`, `townId`, `townName`);  附注:要求每个字段都是有值的,即几个字段就要几个',';
    8. [1064] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT 0, 1000' at line 1。解析:好吧,这是个最通用的错误解释,就是说你的语法写错了。比如 where a_id= order by id desc;这里你原本是想获取一个ID然后去查询,但是后面的ID得到空值,所以整个语法就错了。其实,如果是直接接收参数去查询,这本身可能报错,也是一个注入点,请一定要处理传入的值,一般要求'='号后给''号,整型参数用intval()格式化等等安全意识!
    9. 讲解:REPLACE与INSERT 功能其实是差不多的(唯一键是必须的),但是REPLACE会在数据库中存在此记录时先删除再插入,如有自增ID,将会被迅速变大,从而不必手动执行删除操作,而INSERT重复数据时则将报错(可配合UPDATE使用)。适当使用两个功能,解决问题!
0 0
原创粉丝点击