我们正在使用mysql alter命令删除一个列,但管理员最近设置了ndb_allow_copying_alter_table=OFF,现在在运行alter查询时,我们得到以下错误:错误1846(0A000):不支持隐式复制alter。原因:ndb_allow_copying_alter_table=0。尝试ALGORITHM=COPY以强制更改。以前有人遇到过这种情况吗?
4bbkushb1#
我会尝试使用instant方法来看看是否有效:即时操作这应该看起来像这样:
ALTER TABLE tbl_name DROP COLUMN column_name, ALGORITHM=INSTANT;
如果你再次得到一个错误,你应该使用“算法=复制”,而不是,请让我知道。
q9yhzks02#
config:ndb_allow_copying_alter_table=OFF确认修改后的表结构不会显示当你的mysql版本> 8.0,你可以使用
ndb_allow_copying_alter_table=OFF
它会强制修改表结构,但是这个操作会修改集群中的其他mysql机器,你必须清楚知道你在做什么。该命令可用于立即删除表列,而无需复制表,无需临时表,使其更快,更有效,如果删除的列不存在于任何其他相关对象(如索引,约束,触发器等),则可以使用ALGORITHM=INSTANT选项执行立即删除。否则,MySQL将回退到复制表来执行删除操作。如果要使用复制方法删除此列,可以使用其他命令:
ALTER TABLE table_name DROP COLUMN column_name, ALGORITHM=COPY;
2条答案
按热度按时间4bbkushb1#
我会尝试使用instant方法来看看是否有效:即时操作
这应该看起来像这样:
如果你再次得到一个错误,你应该使用“算法=复制”,而不是,请让我知道。
q9yhzks02#
config:
ndb_allow_copying_alter_table=OFF
确认修改后的表结构不会显示当你的mysql版本> 8.0,你可以使用
它会强制修改表结构,但是这个操作会修改集群中的其他mysql机器,你必须清楚知道你在做什么。
该命令可用于立即删除表列,而无需复制表,无需临时表,使其更快,更有效,如果删除的列不存在于任何其他相关对象(如索引,约束,触发器等),则可以使用ALGORITHM=INSTANT选项执行立即删除。否则,MySQL将回退到复制表来执行删除操作。
如果要使用复制方法删除此列,可以使用其他命令: