mysql插入数据出现error1114 table is full

今天尝试使用索引来提升查找效率,因此使用mysql进行实验,然后创建了一个表,往里面随机插入100万条数据。使用的是linux环境下的mysql,数据库连接软件是navicat。

使用里面包含tableid,userid等,这是创建表的语句。

CREATE TABLE `user` (  

    `tableid` INT (11) NOT NULL AUTO_INCREMENT,  

    `userid` VARCHAR (20) NOT NULL,  

    `type` TINYINT (16) NOT NULL,  

    `time` datetime NOT NULL,  

    PRIMARY KEY (`tableid`)

) ENGINE = MEMORY AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8

然后构建一个随机函数,这里的userid使用的是随机函数

delimiter $$
create function rand_string(n int) returns varchar(255)
begin
declare chars_str varchar(100) default 'abcdefghijklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ';
declare return_str varchar(255) default '';
declare i int default 0;
while i

然后使用过程进行创建

delimiter $$
CREATE  PROCEDURE `add_vote_memory`(IN n int)  

select count(*) from vote_record_memory
BEGIN    

  DECLARE i INT DEFAULT 1;  

    WHILE (i <= n ) DO  

      INSERT into vote_record_memory  (userid,type,time ) VALUEs (rand_string(20),FLOOR(RAND() * 10),now() );  

            set i=i+1;  

    END WHILE;  

END  
$$

 

之后再调用这个过程

call add_vote_memory(1000000)

然后就执行操作,但是还没有执行完就发现出现了报错

查看数据库,发现竟然网上竟然说的是这样做是压力测试的时候报错。原因有二:1

1 得知是由于内存表的大小超过了规定的范围。经过查看二者值默认均是16M,

2.需要设置tmp_table_size 大于等于max_heap_table_size

首先查看内存表得大小:

在mysql里面查询

show  VARIABLES like '%%table_size%'

mysql插入数据出现error1114 table is full_第1张图片

得到上述的结果打开/etc/mysql目录下的my.cnf并在后面添加

tmp_table_size = 256M
max_heap_table_size = 256M

需要写入my.cnf配置文件重启mysql然后生效。

使用

service mysql restart

进行重启mysql服务

你可能感兴趣的:(软件使用)