首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 實用筆記:字段修改、大小寫敏感、表結構查看、備份還原與 1449 錯誤解決

     編輯:MySQL 綜合教學

MySQL 實用筆記:字段修改、大小寫敏感、表結構查看、備份還原與 1449 錯誤解決

1. 修改字段類型與長度

ALTER TABLE 表名 MODIFY COLUMN 字段名 新類型;
-- 例:將 name 改為 VARCHAR(50)
ALTER TABLE player MODIFY COLUMN name VARCHAR(50);

注意:

  • 謹慎修改類型,可能導致現有數據截斷或報錯。
  • 縮短長度前確保現有數據長度 ≤ 新長度,否則報錯。

2. 設置字段值大小寫敏感

MySQL 預設不區分大小寫,需給字段加 BINARY 屬性:

-- 建表時
CREATE TABLE player(name VARCHAR(64) BINARY);
-- 修改既有表
ALTER TABLE player MODIFY COLUMN name VARCHAR(64) BINARY;

3. 查看表結構

DESC player;
-- 或
SHOW COLUMNS FROM player;

4. mysqldump 備份與還原

場景命令
整庫備份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;)

5. 解決 mysqldump 1449 錯誤(DEFINER 權限問題)

現象: 從 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 擋路

將這些常用操作沉澱為筆記,關鍵時刻查閱即得,效率倍增。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved