出现 table '#sql- xx' is full !!!

dsgdsg 2009-04-16 02:40:21
目前状态..
这个数据库
含有4840多个表,其中4800个表共含有 数据 1100W少一点,
然后有36个表 含有1100W 少一点

然后我用java程序处理其中36个表,将他们的数据又存入 新的 36个表里面

意思就是一共有3300w记录..

以前运行没问题,但是自从 有次我同时运行 2个java程序以后..就出现了

the table 'my_table' is full (数据库存在my_table表)

过了两天.这个异常又变成
the table '#sql-xx' is full (数据库不存在#sql-xx表)

然后在mysql的data目录中..我发现 ibdata1 文件(应该就是保存数据的文件吧) 已经达到 3.99G ..
(为什么mysql不创建第二个保存数据的文件--如ibdata2 ........)

我是windows Xp (好像单个文件4G?) ,数据表创建的时候表格是 MyIs.....

现在根本不知道咋办了?

网上用的修改 tem_table_size=64M

max_heap_table_size=32M
我也用了..

现在不知道杂办了..!!
知道的前辈给点意见啊...
...全文
459 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2009-04-18
  • 打赏
  • 举报
回复
ACMAIN_CHM 2009-04-17
  • 打赏
  • 举报
回复

怎么创建另一个 存储区域??

在你的my.ini文件中自已加一下。

innodb_data_file_path=c:mysql/data/ibdata1:50M;c:mysql/data/ibdata2:50M:autoextend

或者到mySQL administrator 中通过GUI到startup variable 的 innoDB parameters中设置一下。
wwwwb 2009-04-17
  • 打赏
  • 举报
回复
指定 InnoDB 只建立一个最初大小为 100 MB 并且当表空间被用尽时以 8MB 每块增加的数据文件。如果硬盘空间不足,可以再添加一个数据文件并将其放在其它的硬盘中。 举例来说:先检查硬盘空间的大小,设定 ibdata1 文件使它接近于硬盘空余空间大小并为 1024 * 1024 bytes (= 1 MB)的倍数, 将 ibdata1 明确地指定在 innodb_data_file_path 中。在此之后可以添加另一个数据文件:

innodb_data_home_dir =
innodb_data_file_path = /ibdata/ibdata1:988M;/disk2/ibdata2:50M:autoextend

注意:设定文件大小时一定要注意你的OS是否有最大文件尺寸为2GB的限制!InnoDB是不会注意你的OS文件尺寸限制的, 在一些文件系统中你可能要设定最大容量限制:

innodb_data_home_dir =
innodb_data_file_path = /ibdata/ibdata1:100M:autoextend:max:2000M
dsgdsg 2009-04-17
  • 打赏
  • 举报
回复
不会吧?
那意思就是 如果系统文件系统是fat32的话..
mysql就只能创建一个存储内容的 ibdata1 文件??


因为 就象我帖子所说的..
mysql似乎不会创建一个新的存储数据的文件?
wwwwb 2009-04-17
  • 打赏
  • 举报
回复
创建另一个 存储区域?? :如果依然是FAT32格式的话,依然会出问题
dsgdsg 2009-04-17
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 xuezhanliang6886 的回复:]
引用 10 楼 ACMAIN_CHM 的回复:
ibdata1  是innodb的一个文件。
一般这个文件大小不会减少只会增加,不过你删除记录后可以用 optimize table <table name>, 让mysql优化一下,但这个操作比较耗时

已经3.99G了,当然有没办法继续再增长了。


分析的相当对,已经达到限制度了,所以会提示FULL了!这个你得改一下子!或创建另一个存储区域!
[/Quote]


我昨天将盘改为了 ntfs了..
现在不会出现 table ... is full了!!

但是我想知道一下有没有其他的方法?

比如楼上说的

怎么创建另一个 存储区域??


xuezhanliang6886 2009-04-17
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 ACMAIN_CHM 的回复:]
ibdata1 是innodb的一个文件。
一般这个文件大小不会减少只会增加,不过你删除记录后可以用 optimize table <table name>, 让mysql优化一下,但这个操作比较耗时

已经3.99G了,当然有没办法继续再增长了。
[/Quote]

分析的相当对,已经达到限制度了,所以会提示FULL了!这个你得改一下子!或创建另一个存储区域!
ACMAIN_CHM 2009-04-16
  • 打赏
  • 举报
回复

ibdata1 是innodb的一个文件。
一般这个文件大小不会减少只会增加,不过你删除记录后可以用 optimize table <table name>, 让mysql优化一下,但这个操作比较耗时

已经3.99G了,当然有没办法继续再增长了。
WWWWA 2009-04-16
  • 打赏
  • 举报
回复
innodb引擎
试试
1. shut down mysqld cleanly
2. remove ib_logfile* files in your mysql data directory, which is possibly /var/lib/mysql
innodb_data_file_path = ibdata1:10M:autoextend

3. restart mysqld again and check all tables are fine.
dsgdsg 2009-04-16
  • 打赏
  • 举报
回复
show table status like 'fenci_merger_4'

"fenci_merger_4","InnoDB",10,"Compact",158001,373,59015168,0,0,0,NULL,"2009-04-14 21:27:12",NULL,NULL,"utf8_general_ci",NULL,"max_rows=1000000000","InnoDB free: 143360 kB"


WWWWA 2009-04-16
  • 打赏
  • 举报
回复
Fat32:最大2G,你最好转换为NTFS格式
dsgdsg 2009-04-16
  • 打赏
  • 举报
回复
谢谢各位.
4GB的限制是对于每一个表?---如果是.我每一个表的数据远远不到1个G吧..一个表最多也就30w条记录

还是一个mysql存储的数据最多只能是4GB?应该不会吧

我是Fat32的格式
ACMAIN_CHM 2009-04-16
  • 打赏
  • 举报
回复

如果你是NTFS,则可以做以下操作。

在默认情况下,MySQL创建的MyISAM表允许的最大尺寸为4GB。你可以使用SHOW TABLE STATUS语句或myisamchk -dv tbl_name检查表的最大尺寸。

如果需要使用大于4GB的MyISAM表(而且你的操作系统支持大文件),可使用允许AVG_ROW_LENGTH和MAX_ROWS选项,可以使用ALTER TABLE更改这些选项,以增加表的最大允许容量。

ACMAIN_CHM 2009-04-16
  • 打赏
  • 举报
回复

XP上如果你用的NTFS则可以到达 4T, 但如果是FAT/FAT32则单个文件只能到 4G
WWWWA 2009-04-16
  • 打赏
  • 举报
回复
用 show table status like 'tbl_name'\G
贴结果
ALTER TABLE tbl_name MAX_ROWS=1000000000 AVG_ROW_LENGTH=123
WWWWA 2009-04-16
  • 打赏
  • 举报
回复
磁盘格式NTFS?
WWWWA 2009-04-16
  • 打赏
  • 举报
回复
表的引擎是MYISAM?
repair table table_name试试

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧