当我们使用MySQL导出表数据时,有时候会遇到error 1105的错误提示。error 1105是由于MySQL在导出数据的过程中出现了错误而导致的。在此文章中,我们将讨论这个问题的原因和解决方法。
在导出表数据时,我们需要使用MySQL命令行工具。如果我们在命令行窗口中直接使用SELECT命令导出数据,就有可能出现error 1105的错误提示。这是由于导出数据的行数超过了MySQL预设的最大行数限制。
mysql>SELECT * INTO OUTFILE 'data.csv' FROM table_name;ERROR 1105 (HY000): XtraDB: The number of locks exceeds the lock table size
为了解决这个问题,我们需要根据表的大小和机器的内存来调整MySQL的预设最大行数限制。我们可以通过增加innodb_buffer_pool_size大小来扩大MySQL预设最大行数限制。我们可以使用以下命令在MySQL中扩大预设最大行数限制:
SET GLOBAL innodb_buffer_pool_size=SIZE_IN_BYTES;
需要注意的是,SIZE_IN_BYTES应该根据我们实际的内存大小进行设置。如果我们在调整innodb_buffer_pool_size时出现了错误,我们可以根据错误提示来调整:
InnoDB: Initializing buffer pool, size = 128.0MInnoDB: mmap(137363456 bytes) failed; errno 12InnoDB: Completed initialization of buffer poolInnoDB: Cannot allocate memory for the buffer poolInnoDB: Error: cannot allocate 137364224 bytes of memory for InnoDB buffer pool.InnoDB: Error: this process has already created the InnoDB data dictionaryInnoDB: Error: cannot initialize data file D:\MySQL DataFiles\ibdata1InnoDB: Error: could not create or open file D:\MySQL DataFiles\ibdata1090304 1:32:56 InnoDB: Started; log sequence number 0 43665090304 1:32:56 [ERROR] Can't start server : Bind on unix socket: No such file or directory090304 1:32:56 [ERROR] Do you already have another mysqld server running on port: 3306 ?090304 1:32:56 [ERROR] Aborting090304 1:32:56 [Note] mysqld: Shutdown complete
在此错误提示中,我们可以看到错误信息:InnoDB: mmap(137363456 bytes) failed; errno 12。这意味着我们需要调整innodb_buffer_pool_size的大小。
在调整innodb_buffer_pool_size之后,我们使用SELECT命令导出数据就可以避免error 1105的错误提示了。