全部產品
Search
文件中心

ApsaraDB RDS:MySQL提示:1846 (0A000): ALGORITHM=INPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY

更新時間:May 20, 2025

問題現象

在RDS MySQL執行個體中,使用INPLACE方式擴充VARCHAR欄位長度時,提示如下錯誤:

ERROR 1846 (0A000):ALGORITHM=INPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY.

可能原因

使用INPLACE方式擴充VARCHAR欄位長度時,不支援將小於256位元組的欄位擴充為等於或大於256位元組的欄位。

支援擴充的欄位長度範圍為:

擴充前

擴充後

小於256位元組

小於256位元組

等於或大於256位元組

大於256位元組

使用INPLACE方式擴充VARCHAR欄位的詳情,請參見MySQL官方文檔

說明

VARCHAR(50)中的50指字元長度,其佔用的位元組數與字元集有關:

  • 對於ASCII字元集,1個字元佔用1個位元組,從VARCHAR(50)擴充到VARCHAR(100),佔用位元組從50位元組變為100位元組。此時,支援INPLACE方式。

  • 對於utf8字元集,1個字元最多佔用3個位元組,從VARCHAR(50)擴充到VARCHAR(100),佔用位元組從150位元組變為300位元組。此時,不支援INPLACE方式。

解決方案

  • 如果您不需要將小於256位元組的VARCHAR欄位長度擴充為等於或大於256位元組的欄位長度,可使用INPLACE方式,即將ALGORITHM參數設定為INPLACE。

    說明

    在使用INPLACE方式擴充VARCHAR欄位長度時,請根據INPLACE方式支援擴充的欄位長度範圍進行擴充,詳情請參見可能原因

  • 如果您需要將小於256位元組的VARCHAR欄位長度擴充為等於或大於256位元組的欄位長度,可使用COPY方式,即將ALGORITHM參數設定為COPY。

    命令樣本如下:

    ALTER TABLE  `table1` CHANGE COLUMN `col1` VARCHAR(256)  DEFAULT NULL, ALGORITHM=COPY;