我要修改一個庫中所有沒有該欄位的表
這是我寫的存盤程序:
BEGIN
DECLARE _tableName VARCHAR(32);
DECLARE _done INT DEFAULT 0;
DECLARE _cur CURSOR FOR
SELECT table_name FROM information_schema.`COLUMNS` WHERE TABLE_SCHEMA='test' AND TABLE_NAME NOT LIKE 'ACT%' group by TABLE_NAME ;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET _done=1;#錯誤定義,標記回圈結束
OPEN _cur;
REPEAT
FETCH _cur INTO _tableName;
IF NOT _done THEN
BEGIN
IF NOT EXISTS (SELECT * FROM information_schema.columns WHERE table_schema = 'test' AND table_name = _tableName AND column_name = 'PROJECT_ID') THEN
SET @STMT := CONCAT("ALTER TABLE ",_tableName," ADD COLUMN PROJECT_ID VARCHAR(32);");
PREPARE STMT FROM @STMT;
EXECUTE STMT;
#ALTER TABLE _tableName ADD COLUMN PROJECT_ID VARCHAR(32);
END IF;
END;
END IF;
UNTIL _done END REPEAT;
CLOSE _cur;
SET _done = 0;#只有定義為0,新的回圈才能繼續。
END
執行提示:1265 - Data truncated for column '_tableName' at row 13
急求解!!
uj5u.com熱心網友回復:
DECLARE _tableName VARCHAR(32);把長度設定大點試試
uj5u.com熱心網友回復:
謝謝autfish,果然可以了uj5u.com熱心網友回復:
檢查這個陳述句中是否有過長的表名。樓主只定義了 _tableName VARCHAR(32);SELECT table_name FROM information_schema.`COLUMNS` WHERE TABLE_SCHEMA='test' AND TABLE_NAME NOT LIKE 'ACT%' group by TABLE_NAME ;
uj5u.com熱心網友回復:
qq_31198711深海奇景
結帖率:0%
uj5u.com熱心網友回復:
謝謝ACMAIN_CHM的建議uj5u.com熱心網友回復:
為什么我按照你的存盤結構寫的,然后顯示執行成功了,查看表結構卻發現并沒有修改呢?轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/105070.html
標籤:MySQL
上一篇:linux下安裝mysql資料庫
