每隔几周,我就会收到The table 'ttrss_users' is full
来自安装的消息http://tt-rss.org/redmine/(用 PHP 编写的 RSS 阅读器应用程序)。
它始终是用户表(InnoDB),其布局如下:
id int(11)
login varchar(120)
pwd_hash varchar(250)
last_login datetime
access_level int(11)
theme_id int(11)
email varchar(250)
full_name varchar(250)
email_digest tinyint(1)
last_digest_sent datetime
created datetime
twitter_oauth longtext
导致错误的查询是:UPDATE ttrss_users SET last_login = NOW() WHERE id = x
并且仅影响此表(不影响此服务器上的其他表或数据库)。
我发现的唯一解决方案是重新启动服务器。通过 ALTER TABLE 进行更改MAX_ROWS
似乎AVG_ROW_LENGTH
只会影响 MyISAM 表。
有任何想法吗?
答案1
问题就出在innodb_data_file_path上。
根据您的评论:innodb_data_file_path = ibdata1:10M:autoextend:max:1024M
文件 ibdata1 包含四种类型的数据
表数据
表索引
表元数据
可能只是没有空间来写入 ttrss_users 中需要更新的行的旧值周围的 MVCC 数据。尝试删除 ibdata1 的大小限制
步骤 01)将 /etc/my.cnf 中的以下行从
innodb_data_file_path = ibdata1:10M:autoextend:max:1024M
对此
`innodb_data_file_path = ibdata1:10M:autoextend`
步骤02)
service mysql restart
步骤 03)尝试 UPDATE 语句
试一试 !!!