MySQL ERROR 1114(HY000):表格已满 - 仅适用于特定值

时间:2017-06-25 09:08:49

标签: mysql

我尝试使用简单的INESRT查询向InnoDB表添加一行。对于某些值,我收到错误,而对于其他值,则接受查询:

mysql> INSERT INTO pylog (id, description) VALUES ('606_0', 'testing');
ERROR 1114 (HY000): The table 'pylog' is full

mysql> INSERT INTO pylog (id, description) VALUES ('706_0', 'testing');
Query OK, 1 row affected (0.02 sec)

mysql> INSERT INTO pylog (id, description) VALUES ('610_0', 'testing');
Query OK, 1 row affected (0.01 sec)

mysql> INSERT INTO pylog (id, description) VALUES ('609_0', 'testing');
ERROR 1114 (HY000): The table 'pylog' is full

mysql> INSERT INTO pylog (id, description) VALUES ('609_01', 'testing');
ERROR 1114 (HY000): The table 'pylog' is full

mysql> INSERT INTO pylog (id, description) VALUES ('610_01', 'testing');
Query OK, 1 row affected (0.00 sec)

该表是使用以下查询创建的:

CREATE TABLE pylog (
    id VARCHAR(50) NOT NULL PRIMARY KEY,
    ctime TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    description TEXT
);

该表已包含63,954行,这些行是由使用MySQLdb模块的python脚本创建的。 DB需要大约2GB,磁盘有大约20GB的可用空间。直到最近我才遇到这个问题,无论是在运行我的python脚本还是直接从mysql运行查询时。

我运行的代码:

# CONN is the connection, CUR is the cursor
if not CUR or not CONN:
    return

# Create an ID for the new row, in the format '{:d}_{:09d}'
CUR.execute('SELECT id FROM pylog WHERE id LIKE "{}\_%" ORDER BY id DESC LIMIT 1'.format(MACHINE_ID))
if CUR.rowcount > 0:
    last_id = CUR.fetchone()[0]
    count = int(last_id.split('_')[-1]) + 1
else:
    count = 0
log_id = '{}_{:09d}'.format(MACHINE_ID, count)
CUR.execute('INSERT INTO pylog (id, description) VALUES (%s,%s)', (log_id, text))
CONN.commit()

为什么我得到"桌子已满?#34;只有某些值出错,而显然表格不满?

2 个答案:

答案 0 :(得分:0)

也许my.cnf配置文件中innodb_data_file_path的最大大小太小。你能尝试一下:

innodb_data_file_path = ibdata1:10M:autoextend:max:512M

答案 1 :(得分:0)

如果您的 LAMP 堆栈使用 XAMPP 进行管理,请点击 MySQL 行和 Admin 按钮旁边的 config 按钮。 >

这将打开配置文件。

在那里,对 innodb_data_file_path 执行 'Ctrl + F' 并将 ma​​x 值更新为更高的值并重新启动 MySQL 服务器。

它现在应该可以工作了。