ALTER TABLE 表名 MODIFY COLUMN 字段名 新類型;
-- 例:將 name 改為 VARCHAR(50)
ALTER TABLE player MODIFY COLUMN name VARCHAR(50);
注意:
MySQL 預設不區分大小寫,需給字段加 BINARY 屬性:
-- 建表時
CREATE TABLE player(name VARCHAR(64) BINARY);
-- 修改既有表
ALTER TABLE player MODIFY COLUMN name VARCHAR(64) BINARY;
DESC player;
-- 或
SHOW COLUMNS FROM player;
| 場景 | 命令 |
|---|---|
| 整庫備份 | mysqldump -u root -p pwd mydatabase > idata.sql |
| 單表備份 | mysqldump -u root -p pwd mydatabase users > idata_user.sql |
| 僅結構 | mysqldump -u root -p pwd -d mydatabase > idata.sql |
| 還原 | mysql -u root -p < idata.sql(進入 mysql 後 SOURCE idata.sql;) |
現象: 從 Server A(用戶 dog)備份,導入 Server B(用戶 cat)報錯:
ERROR 1449: The user specified as a definer ('dog'@'%') does not exist
原因: 視圖/存儲過程/觸發器帶有 DEFINER=dog@%,目標庫無此用戶。
解決: 在目標庫授予同名用戶權限,或備份前用 sed 移除 DEFINER:
-- 方法一:目標庫建立同名用戶並授權
GRANT ALL PRIVILEGES ON dog.* TO 'dog'@'%' IDENTIFIED BY 'cat';
FLUSH PRIVILEGES;
-- 方法二:備份文件去除 DEFINER(適用結構備份)
sed -i 's/DEFINER=`[^`]*`@`[^`]*`//g' idata.sql
ALTER TABLE ... MODIFY COLUMN — 改類型/長度/屬性BINARY — 字段級大小寫敏感DESC / SHOW COLUMNS — 看結構mysqldump -d — 只導結構DEFINER 遷移必處理,否則 1449 擋路將這些常用操作沉澱為筆記,關鍵時刻查閱即得,效率倍增。