修改表結構(如 ALTER TABLE 修改列)時報錯,提示字段默認值無效或字段名已存在。
DATETIME/TIMESTAMP 列默認值為 0000-00-00 00:00:00,新版 sql_mode 包含 NO_ZERO_DATE/NO_ZERO_IN_DATE 後禁止。ALTER TABLE t DROP COLUMN xxx;ALTER TABLE t ADD COLUMN xxx DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP;本地 MySQL 5.0.45 (UTF-8) 導出,導入遠程 5.0.22 (UTF-8),中文全部丟失或變問號。
SET NAMES utf8 或使用非標準轉義,導致導入時字符集聲明缺失。mysqldump -u root -p123456 thfxw > d:\ym.sql
命令行導出包含完整字符集設置,導入無誤。
--default-character-set=utf8(或 utf8mb4)。SET NAMES utf8 / SET CHARACTER SET utf8。CREATE TABLE t (...) DEFAULT CHARSET=utf8;。