Error number: 4036; Symbol: ER_SDI_GET_KEYS_INVALID_TABLESPACE; SQLSTATE: HY000
Message: Tablespace ‘%s’ is invalid for SDI operations.
**错误说明**
ER_SDI_GET_KEYS_INVALID_TABLESPACE 错误表明尝试从指定的表空间上发现全局索引列时发生了一些问题。
错误号4036属于MySQL和InnoDB存储引擎中的错误,属于一个MySQL服务器自定义错误类别。该错误码不是指定错误,而是一个事务被终止的标志,当检查到该错误时,MySQL会终止该事务,因此该错误看起来就像根本没有发生一样。
1. 试图创建或更新表空间时使用了一个不存在的表空间名称
2. 尝试在使用不同的字符集时创建或更改表空间
3. 尝试在创建或更改表空间的情况下使用不支持的编码
4. 不正确的 Innodb 数据表空间参数,或者参数缺失
**解决方法**
解决这个问题,首先要检查错误消息中包含的提示,因此需要检查InnoDB表空间的完整配置。
如果参数没有正确设置,最好在正确设置了所有参数后再次尝试操作,表空间参数应当正确设置,并且必须确保为表空间分配足够的磁盘空间以支持索引列全局搜索和发现。
此外,在尝试从表空间发现全局索引列的过程中,MySQL用户也可以关闭/重新启动MySQL服务器以及重新加载my.cnf文件,以确保参数是正确配置的。具体来说,可以使用以下实用程序:
1. 关闭 MySQL 服务: `sudo service mysql stop`
2. 备份并编辑my.cnf文件:`sudo cp my.cnf my.cnf.backup`
3. 重新启动 MySQL 服务: `sudo service mysql start`
编辑完成后,再次尝试重新发现全局索引,以确保设置正确。如果仍然存在问题,最好将收件箱存储引擎切换回 MyISAM 或其他引擎,以便能够重新发布该语句,但是这不是一种推荐的解决方法,因为这样做会有一些性能和安全问题。