ERROR 1366 (HY000): Incorrect integer value: 'False' for column 'bd_ip' at row 1943555
来源:互联网 发布:js中的splice 编辑:程序博客网 时间:2024/06/03 15:46
更改MySQL表的属性,前期没有考虑到性能问题,将存IP段的列设置了varchar类型,由于数据量询量不断增大,使用char类型存储IP地址不仅占用空间而且影响MySQL查询效率,在多表jion时性能差异就更明显了,所以存储ip用int类型,int只占用4个字节,因为省空间,空间就是效率,选用字段的一般原则是能用占用少字节的字段就不用大字段MySQL支持5个主要几个类型是tinyint,smallint,mediumint,int,bigint注:一般程序的字符集是gbk或者utf8,使用char类型跟字符集也有关系 gbk:一个字符占2字节 utf8:一个字符占3个字节查看本次测试环境1.当前MySQL版本mysql> select version();+------------+| version() |+------------+| 5.6.28-log |+------------+1 row in set (0.02 sec)2.查询原表结构mysql> desc domain;+-----------+--------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+-----------+--------------+------+-----+---------+----------------+| id | int(10) | NO | PRI | NULL | auto_increment || bd_domain | varchar(255) | YES | UNI | NULL | || bd_ip | varchar(16) | YES | | NULL | |+-----------+--------------+------+-----+---------+----------------+3.创建测试表mysql> drop table t1;Query OK, 0 rows affected (0.08 sec)mysql> create table t1 select * from bd_domain;Query OK, 9053585 rows affected (3 min 44.47 sec)Records: 9053585 Duplicates: 0 Warnings: 0mysql> select bd_domain,bd_ip from t1 limit 6;+------------------------+-----------+| bd_domain | bd_ip |+------------------------+-----------+| 039b1ee.netsolhost.com | 0.0.0.0 || 03a6b7a.netsolhost.com | 0.0.0.0 || 03a6f57.netsolhost.com | 0.0.0.0 || 03bbec4.netsolhost.com | 0.0.0.0 || 0if1nl6.org | 0.0.0.0 || 0x.x.gg | 127.0.0.1 |+------------------------+-----------+6 rows in set (0.00 sec)4.查询新表T1结构,bd_ip列为varchar类型mysql> desc t1;+-----------+--------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-----------+--------------+------+-----+---------+-------+| id | int(10) | NO | | 0 | || bd_domain | varchar(255) | YES | | NULL | || bd_ip | varchar(16) | YES | | NULL | |+-----------+--------------+------+-----+---------+-------+3 rows in set (0.00 sec)5.将t1表的列更改为无符号整形mysql> UPDATE `t1` SET bd_ip = INET_ATON(bd_ip) WHERE INET_ATON(bd_ip) is NOT NULL;Query OK, 2588296 rows affected (2 min 2.10 sec)Rows matched: 2588296 Changed: 2588296 Warnings: 06.在执行alter的时候发现第1943555行数据有问题,一般来说可能是这列存在其他字符导致无法更改属性mysql> ALTER TABLE `t1` CHANGE `bd_ip` `bd_ip` INT UNSIGNED NOT NULL;ERROR 1366 (HY000): Incorrect integer value: 'False' for column 'bd_ip' at row 19435557.现在开始查找第1943555这行数据,t1表有900多万行数据,不太可能从图形化客户端直接查找,利用id范围来确定具体行数,在根据条件定位1943555行的数据mysql> select count(*) from t1;+----------+| count(*) |+----------+| 9053585 |+----------+1 row in set (3.41 sec)8.根据id范围来定位1943555这行数据,具体id分为可自行增减mysql> select count(*) from Mdomain where id<28553491;+----------+| count(*) |+----------+| 1943553 |+----------+1 row in set (0.55 sec)mysql> select count(*) from Mdomain where id<28553498;+----------+| count(*) |+----------+| 1943555 |+----------+1 row in set (0.56 sec)9.定位之后查询这行数据,bd_ip此列有False值,因此我们在更改bd_ip列属性时会爆出错误mysql> select bd_domain,bd_ip from t1 where id=28553497;+--------------------+-------+| bd_domain | bd_ip |+--------------------+-------+| mysmiledoctors.com | False |+--------------------+-------+1 row in set (4.23 sec)10.更新1943555这列数据,将其更新为整形数据mysql> update t1 set bd_ip='0' where bd_ip='False';Query OK, 6465286 rows affected (4 min 17.47 sec)Rows matched: 6465286 Changed: 6465286 Warnings: 011.再次更改bd_ip列属性mysql> ALTER TABLE `t1` CHANGE `bd_ip` `bd_ip` INT UNSIGNED NOT NULL;Query OK, 9053581 rows affected (4 min 42.02 sec)Records: 9053581 Duplicates: 0 Warnings: 012.查查看t1表结构mysql>desc t1; +-----------+------------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-----------+------------------+------+-----+---------+-------+| id | int(10) | NO | | 0 | || bd_domain | varchar(255) | YES | | NULL | || bd_ip | int(10) unsigned | NO | | NULL | ||+-----------+------------------+------+-----+---------+-------+
阅读全文
1 0
- ERROR 1366 (HY000): Incorrect integer value: 'False' for column 'bd_ip' at row 1943555
- ERROR 1366 (HY000): Incorrect string value:’XXX’ for column 'XXX at row 1解决
- ERROR 1366 (HY000): Incorrect string value: '\xD6\xD0\xCE\xC4' for column XXX at row 1
- ERROR 1366 (HY000): Incorrect string value: '\xC6\xF4\xD3\xC3' for column 'name' at row 1
- ERROR 1366 (HY000): Incorrect string value: '\xE5\xB8\x82' for column 'address' at row 1
- ERROR 1366 (HY000): Incorrect string value: '\xE7\x9A\x84' for column 'name' at row 1
- ERROR 1366 (HY000): Incorrect string value: '\ ' for column ' ' at row 1
- ERROR 1366 (HY000): Incorrect string value: '\xC6\xF4\xD3\xC3' for column 'name' at row 1
- ERROR 1366 (HY000): Incorrect string value:’XXX’ for column 'XXX at row 1解决
- ERROR 1366 (HY000): Incorrect string value: '\xE5\xB8\x82' for column 'address' at row 1
- ERROR 1366 (HY000): Incorrect string value: '\xD6\xD0\xCE\xC4' for column XXX at row 1
- ERROR 1366 (HY000): Incorrect string value: '\xE4\xB8\xAD\xE5\x9B\xBD' for column 'tname' at row 1
- ERROR 1366 (HY000): Incorrect string value: '\xE4\xBD\xA0\xE5\xA5\xBD' for column 'name' at row 1
- ERROR 1366 (HY000): Incorrect string value: '\xC2\xEC\xD2\xCF\xD2\xB2...' for column 'title' at row
- Incorrect integer value: ‘ for column “ID” at row 1
- 解决Incorrect integer value: '' for column 'id' at row 1
- 解决Incorrect integer value: for column id; at row 1
- MySQL Error : Incorrect date value: '' for column '×××××××××' at row 1
- 服务器硬盘出现坏道导致数据丢失的数据恢复过程
- gcc常用编译选项
- HTML 关于块级元素<p>所遇到的问题
- 各种创建单例模式的优缺点
- Android下的LocalSocket
- ERROR 1366 (HY000): Incorrect integer value: 'False' for column 'bd_ip' at row 1943555
- Android 架构师之路(一)
- BootStrap-table-contextmenu使用过程的一些总结
- (人脸识别2-1)——利用opencv打开摄像头
- RabbitMQ-c在Linux上编译
- 年终写总结,这个Excel图表技巧一定要看看
- HttpWebRequest上传图片Post到接口
- C 计时器大全
- 深入浅出JMS(一)--JMS基本概念