【发布时间】:2015-07-31 11:05:42
【问题描述】:
我有一个表“table1”并想创建另一个表,但将其存储在内存中(引擎=内存),其中包含来自 table1 的数据。
在我的测试服务器中,SQL 按预期工作 - 创建表一次,将数据从“table1”放入其中,下一次跳过插入,因为表“mem_table”已经存在。
在生产服务器 SQL 是意外的 - 它创建表“mem_table”,从“table1”插入数据。每次运行它都会一次又一次地插入数据。
SQL:
CREATE TABLE IF NOT EXISTS `mem_table` (
`f1` mediumint(9) NOT NULL AUTO_INCREMENT,
`f2` mediumint(9) NOT NULL,
`f3` varchar(100) NOT NULL
PRIMARY KEY (`f1`),
KEY `f3` (`f3`)
) ENGINE=MEMORY DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 SELECT NULL f1, f2, f3 FROM table1;
【问题讨论】:
-
这听起来像是服务器没有足够的内存来存储表的问题
-
@BryanZwicker - 我在 bdname.err 文件中发现错误“[ERROR] /usr/sbin/mysqld: The table 'mem_table' is full”,但我认为原因总是附加数据。你知道解决办法吗?
-
您是否考虑过这些可能性? dev.mysql.com/doc/refman/4.1/en/full-table.html
-
@BryanZwicker 谢谢,看来问题出在 max_heap_table_size 限制中。
-
太棒了。如果您不介意在我发布时接受,我会将我的评论转换为答案以供将来遇到此问题的人使用
标签: mysql create-table