来自存储引擎 InnoDB 的错误 66 "Object is remote"

Got error 66 "Object is remote" from storage engine InnoDB

我是运行ALTER TABLE article_attachment CHANGE content content LONGBLOB NULL

关于这个 table:

CREATE TABLE `article_attachment` (
 `id` bigint(20) NOT NULL AUTO_INCREMENT,
 `article_id` bigint(20) NOT NULL,
 `filename` varchar(250) DEFAULT NULL,
 `content_size` varchar(30) DEFAULT NULL,
 `content_type` text,
 `content_id` varchar(250) DEFAULT NULL,
 `content_alternative` varchar(50) DEFAULT NULL,
 `content` longblob NOT NULL,
 `create_time` datetime NOT NULL,
 `create_by` int(11) NOT NULL,
 `change_time` datetime NOT NULL,
 `change_by` int(11) NOT NULL,
 `disposition` varchar(15) DEFAULT NULL,
 PRIMARY KEY (`id`),
 KEY `article_attachment_article_id` (`article_id`),
 KEY `FK_article_attachment_create_by_id` (`create_by`),
 KEY `FK_article_attachment_change_by_id` (`change_by`)
) ENGINE=InnoDB AUTO_INCREMENT=34672 DEFAULT CHARSET=utf8

并得到错误

Got error 66 "Object is remote" from storage engine InnoDB

Google returns 几乎与错误无关。

我确实将 max_allowed_packet 增加到 999999488,但这没有帮助。

更新

我试图更改同一个 table 中的另一列,它告诉我 The size of BLOB/TEXT data inserted in one transaction is greater than 10% of redo log size. Increase the redo log size using innodb_log_file_size.

也许这与...

好的,我按照https://dba.stackexchange.com/a/1265/42097在my.cnf mysqld部分增加了innodb_log_file_size

Mysql table 的分析告诉我 article_attachment.content max_length 是 22942326。所以我将 innodb_log_file_size 设置为 300000000。

现在 ALTER TABLE 起作用了。