Error number: MY-013631; Symbol: ER_IB_ERR_TEMP_TABLESPACE_DIR_SUBDIR_OF_DATADIR; SQLSTATE: HY000
Message: %s
MY-013631; ER_IB_ERR_TEMP_TABLESPACE_DIR_SUBDIR_OF_DATADIR; HY000错误是MySQL中使用全局表空间时抛出的错误提示。 全局表空间用于存储存储引擎之间共享的表。 此错误提示的消息形式如下:
消息:[Err] 0739 – InnoDB Err: Temporary tablespace directory ‘%s’ is a subdirectory of the MySQL datadir
错误提示指示“InnoDB”错误,表示MySQL无法在datadir的子目录中创建临时表空间目录。 这是因为启用的全局表空间将放置在子目录中,这只会使MySQL得到糟糕的性能影响和无法令人满意的行为。
常见案例
此错误最常被见到在用户尝试修改/设置MySQL参数“innodb_temporary_data_file_path”(用于指定MySQL将在哪个目录中创建临时表空间)时。 例如,用户可能会尝试将其设置为“/var/lib/mysql/tmp”,而/var/lib/mysql是MySQL数据库的datadir。
解决方法
要解决此错误,用户需要修改“innodb_temporary_data_file_path”参数,该参数指定的目录必须与datadir不在同一级目录中。
例如,可以将“innodb_temporary_data_file_path”设置为“/home/tmp”。 相反,datadir设置为“/var/lib/mysql”,因此它们不是同一目录的子目录,也不会发生此错误。
另外,用户还可以将“innodb_temporary_data_file_path”参数设置为“NULL”,这样InnoDB将试图创建其临时表空间目录,这个目录将位于datadir之外。
总之,如果出现MY-013631; ER_IB_ERR_TEMP_TABLESPACE_DIR_SUBDIR_OF_DATADIR; HY000错误,用户可以尝试将“innodb_temporary_data_file_path”参数设置为与datadir不同的目录,或者将其设置为NULL,以纠正此错误的发生。