线上数据库出现以下错误:
Incorrect key file for table '/tmp/#sql_1194_1.MYI'; try to repair it
Got an error from unknown thread, XXXX/storage/myisam/mi_write.c:223
通过查看源码,在mi_write函数的223行报错。
mi_write.c:44
/* Write new record to database */
int mi_write (MI_INFO * info, uchar *record)
而这里是一段err处理逻辑,跳转到err的函数是mi_write.c:142行的write_record函数。而该函数的实现是_mi_write_static_record 函数。
mi_statrec.c:21
int _mi_write_static_record (MI_INFO * info, const uchar * record)
到这里实际还没有结束,还没有完全显示出具体操作的逻辑。继续调试代码,该函数调用了
mi_nommap_pwrite函数。
mi_dynrec.c:255
/*
wrapper for mysql_file_pwrite in case if mmap isn't used */
size_t mi_nommap_pwrite (MI_INFO * info, const uchar * Buffer,
size_t Count , my_off_t offset, myf MyFlags)