问题

1.

将DataFrame数据保存到mysql后,添加索引出现错误提示:
  BLOB/TEXT column used in key specification without a key length

2.

mysql> CREATE INDEX credit_creditchannel_parse_h_index ON credit_creditchannel_parse_h(custid);
1170 - BLOB/TEXT column 'custid' used in key specification without a key length

原因

出问题的原因是DataFrame对象索引的数据类型是TEXT/BLOB或其从属的类型,当将其作为mysql中的主键的时候,

如果这些数据类型缺少明确的长度值,mysql无法保证主键的唯一性,因为这个主键是一个变量,其长度是动态的。

所以当使用 TEXT/BLOB类型的数据作为索引的时候,数据的长度必须提供给mysql,使其能够明确键的长度。但是mysql不支持对TEXT/BLOB长度的限制。

同样的错误也会出现在试图将非TEXT/BLOB类型的数据列转换成TEXT/BLOB类型,这些列被定义成独立的索引,AlterTable命令会失效。

解决方法

1.

mysql> alter table credit_creditchannel_parse_h modify column custid varchar(9);
Query OK, 481562 rows affected (11.26 sec)
Records: 481562 Duplicates: 0 Warnings: 0

r

mysql> CREATE INDEX credit_creditchannel_parse_h ON credit_creditchannel_parse_h (custid); 
Query OK, 0 rows affected (2.44 sec) Records: 0 Duplicates: 0 Warnings: 0

对于pandas应该如下:

1.指定dtype的code字段的数据类型变为varchar(max)

解决这个问题的方式之一是舍弃TEXT/BLOB列作为索引,或者设置另外的列作为主键。如果不得不设置成主键,而想限制TEXT/BLOB的长度,可以尝试使用VARCHAR并设置其长度。VARCHAR默认长度是255个字符,并且其长度必须在其声明之后在其括号中设置,例如,VARCHAR(200)将其设置成200个字符长度。

将DataFrame数据输出到mysql时强制将索引转换成VARCHAR并限制其长度,其中的code是索引的标签:

data.to_sql('data',engine,if_exists='replace',dtype={'code':VARCHAR(data.index.get_level_values('code').str.len().max())})

2.提前建表,truncate table+data.to_sql(if_exists='append')

												

添加索引:BLOB/TEXT column 'xxx' used in key specification without a key length的更多相关文章

  1. mysql联合索引阻碍修改列数据类型:BLOB/TEXT column 'name' used in key specification without a key length

    今天在项目中mysql表中有一个字段数据类型为varchar,长度不够需要换为text类型 当时表是已经存在的表, CREATE TABLE `table_aaa` ( `id` int NOT NU ...

  2. 操作MySQL出错提示“BLOB/TEXT column request_data in key specification without a key length”解决办法

    错误原因: 查阅资料后才知道,原来Mysql数据库对于BLOB/TEXT这样类型的数据结构只能索引前N个字符.所以这样的数据类型不能作为主键,也不能是UNIQUE的.所以要换成VARCHAR,但是VA ...

  3. pandas对象保存到mysql出错提示“BLOB/TEXT column used in key specification without a key length”解决办法

    问题 将DataFrame数据保存到mysql中时,出现错误提示: BLOB/TEXT column used in key specification without a key length 原因 ...

  4. 1170 - BLOB/TEXT column 'CustomerName' used in key specification without a key length

    [DTF] Data Transfer 企管宝_2_CRM start[DTF] Getting tables[DTF] Analyzing table: `CustomerInfo`[DTF] Ge ...

  5. MySQL Error 1170 (42000): BLOB/TEXT Column Used in Key Specification Without a Key Length【转】

    今天有开发反应他的建表语句错误,我看了下,提示: MySQL Error 1170 (42000): BLOB/TEXT Column Used in Key Specification Withou ...

  6. 解决BLOB/TEXT column can't have a default value query问题

    Create table的时候,报错BLOB/TEXT column 'xxxxxx( 表名称)' can't have a default value query ,意思是TEXT类型的表字段不能够 ...

  7. [MySQL-1] mysql error 1101 blob/text column can't have a default value

    在MySQL Query Browser上创建一个含有TEXT类型的字段,创建不成功,报错:mysql error 1101 blob/text column can't have a default ...

  8. mysql添加字段索引失败 BLOB/TEXT column 'col2' used in key specification without a key length

    看了下该表的数据结构发现col2字段类型是text ,查询了下发现是:MySQL只能将BLOB/TEXT类型字段设置索引为BLOB/TEXT数据的钱N个字符.索引指定下col2的长度就可以了 : al ...

  9. mysql 添加索引 mysql 创建索引

    1.添加PRIMARY KEY(主键索引) mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 2.添加UNIQUE(唯一索引 ...

随机推荐

  1. Redis学习笔记(一):Redis的数据类型

    之前笔者常常接触的数据库是关系型数据库,其中MySQL接触居多.近年来NoSQL兴起,各种新型数据库不断诞生,redis就是NoSQL中的一种热门数据库. 注:此类文章仅仅作为笔者的学习和阅读积累,若 ...

  2. es查询优化思路

    尽可能的利用内存 将尽可能的索引留在内存,即留更多的堆外内存给es 不查询的字段尽量不要往es插入,节省索引的空间大小(es + hbase) 数据预热 冷热数据分离 文档字段设计 根据查询场景设计字 ...

  3. Python_Modbus_RTU_通讯Demo

    之前利用Python进行Modbus_TCP进行数据接收,本次需要利用串口进行数据传输,学习Modbus_RTU的简单实现 首先要在创建两个虚拟串口,利用VSPD工具即可.在一台电脑上实现数据的发送和 ...

  4. FZU - 2295 Human life (最大权闭合子图)

    题目链接 FZU - 2295 Human life 题目分析 题意:你在玩一个游戏,在其中你可以通过学习一些技能,但是学习某些技能之前,可能还要学习一些其他的技能,并且学习任何技能都有一定的花费: ...

  5. OOP_面向对象程序设计概述

    李际军老师"面向对象程序设计"课程第一课笔记整理 面向对象程序设计概述 20世纪90年代以来面向对象程序设计(Object Oriented Programming, 简称OOP) ...

  6. 20191011-构建我们公司自己的自动化接口测试框架-Util的AssertResult模块

    AssertResult主要就是进行结果断言的了,因为断言结果分2种情况,一种是断言词,一种是断言sheet,如果涉及断言sheet,则需要操作excel到对应的断言表断言所有的字段并且书写断言结果主 ...

  7. 1187: 零起点学算法94——今年暑假不AC(Java)

    1187:零起点学算法94--今年暑假不AC Time Limit: 1 Sec Memory Limit: 32 MB 64bit IO Format: %lld Description " ...

  8. 【满k叉树】Perfect Tree

    题目描述 Given a positive integer k, we define a rooted tree to be k-perfect, if and only if it meets bo ...

  9. vsftp多个用户公享同一个文件,但是权限不同

    如标题:vsftp多个用户公享同一个文件,但是权限不同.如何做到呢.首先创建多个用户,并且指定同一个目录

  10. We Need More Bosses CodeForces - 1000E (无向图缩点)

    大意: 给定无向连通图, 定义两个点$s,t$个价值为切断一条边可以使$s,t$不连通的边数. 求最大价值. 显然只有桥会产生贡献. 先对边双连通分量缩点建树, 然后求直径即为答案. #include ...