我在Amazon RDS上托管了我的数据库。这是db.r3.xlarge实例和具有60Gb磁存储(40GB免费)。最近我写了一个存储过程,获取用户输入为MEDIUMTEXT逗号分隔的字符串,解析并将值插入到临时表中。下面是代码:Amazon RDS:ER_RECORD_FILE_FULL:在存储过程中创建临时表时发生该表
CREATE DEFINER=`ntadmin`@`%` PROCEDURE `sp_test`(
IN cStr MEDIUMTEXT, -- 16777215 --LONGTEXT 4294967295
) DETERMINISTIC
BEGIN
DROP TEMPORARY TABLE IF EXISTS temp_phone;
CREATE TEMPORARY TABLE temp_phone (phone VARCHAR(20) NOT NULL) ENGINE = MEMORY;
SET @sql = CONCAT(" INSERT IGNORE INTO tmp_phone(phone) VALUES ", cStr);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END
这个存储过程调用这样
CALL sp_test("'1234','4567','897458','5784585','453434'");
Note: parameter (cStr) may be come vary vary long string.
它的正常工作对我的发展实例,也未尝不可在生产实例重大案件。但一些这方面它是通过错误“ER_RECORD_FILE_FULL:该表‘tmp_phone’充满
正如我前面提到的,我有自由空间40GB 我在参数组设置变量如下:
innodb_file_per_table = ON
innodb_data_file_path = ibdata1:12M:autoextend
max_heap_table_size = 128000
tmp_table_size = 128000
我是否应该增加max_heap_table_size因为我的最大可能值应在大小来16MB