Every few weeks, i receive the message The table 'ttrss_users' is full
from an installation of http://tt-rss.org/redmine/ (a RSS reader application written in PHP).
It's always the users table (InnoDB), which has the following layout:
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
The query causing the error is: UPDATE ttrss_users SET last_login = NOW() WHERE id = x
and affects only this table (no other table or database on this server).
The only solution i found is to restart the server. Changing MAX_ROWS
and AVG_ROW_LENGTH
via ALTER TABLE seems to affect MyISAM tables only.
Any ideas?
The problem lies right in innodb_data_file_path.
According to your comment:
innodb_data_file_path = ibdata1:10M:autoextend:max:1024M
The file ibdata1 houses four type of data
Table Data
Table Indexes
MVCC (Multiversioning Concurrency Control) Data
Table Metadata
There may simply be no space to write MVCC data around the old values for the row in ttrss_users that needs to be updated. Try removing the size restriction on the size of ibdata1
Step 01) Change the line in /etc/my.cnf from this
innodb_data_file_path = ibdata1:10M:autoextend:max:1024M
to this
Step 02)
service mysql restart
Step 03) Try your UPDATE statement
Give it a Try !!!
UPDATE 2011-10-21 17:03 EDT
You may want to cleanup ibdata1 and keep InnoDB tables outside of ibdata1