大数据量创建主键报错:
mysql> alter table OFFER add constraint pk_offer primary key (offer_id);
ERROR 1878 (HY000): Temporary file write failure.
查看error.log:
2014-09-01 11:44:01 7fca70b8d700 InnoDB: Error: Write to file (merge) failed at offset 2105540608.
InnoDB: 1048576 bytes should have been written, only 913408 were written.
InnoDB: Operating system error number 28.
InnoDB: Check that your OS and file system support files of this size.
InnoDB: Check also that the disk is not full or a disk quota exceeded.
InnoDB: Error number 28 means 'No space left on device'.
InnoDB: Some operating system error numbers are described at
InnoDB: http://dev.mysql.com/doc/refman/5.6/en/operating-system-error-codes.html
没有多余的空间,这个和tmpdir参数有关系,在创建index、主键的时候需要创建一个临时文件做排序,默认情况下是
mysql> show variables like 'tmp%';
+----------------+----------+
| Variable_name | Value |
+----------------+----------+
| tmpdir | /tmp |
+----------------+----------+
空间不足,将 /tmp 下的临时文件清空或者修改tmpdir的值,指向一个大的空间就可以了。
错误相关:http://dev.mysql.com/doc/refman/5.6/en/operating-system-error-codes.html