我必須將alter命令添加到我的架構。更改架構不起作用
SET @s = (SELECT IF(
(SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'product'
AND table_schema = DATABASE()
AND column_name = 'date_madified'
) > 0,
"SELECT 1;",
"ALTER TABLE `product` CHANGE `date_madified` `date_modified`;"
));
PREPARE stmt FROM @s;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
以上執行過程中沒有發生錯誤。但列名不會改變。 當我試圖檢查我發現的錯誤的原因。 1.正確的數據庫沒有被選中。 2.'IF'沒有得到正確的結果,即使我硬編碼數據庫名稱。
儘管以上格式的sql對所有其他修改名稱,數據類型和大小等的情況都能夠成功執行,但在這種情況下,它無法正常工作。
我確定有些列可能已經瘋了,但mysql很幸福地意識到它。您應該查找'date_modified'而不是 – e4c5
實際上,列名稱存在拼寫錯誤。這個ALTER模式是糾正錯誤。 –