lower_case_table_names=0 默認)SELECT id FROM users 報錯 Table 'Users' doesn't existlower_case_table_names=1 (僅限 Windows/macOS,Linux 不建議)AUTO_INCREMENT 屬性,主鍵變為普通 INT NOT NULLColumn 'id' cannot be null 或主鍵衝突mysqldump -u root -p dbname > dump.sql
dump.sql,修改建表語句:-- 原始
CREATE TABLE `users` (
`id` int NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
-- 修正
CREATE TABLE `users` (
`id` int NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
mysql -u root -p -e "DROP DATABASE dbname; CREATE DATABASE dbname;"
mysql -u root -p dbname < dump.sql
| 項目 | 檢查方法 | 標準 |
|---|---|---|
| 行數一致 | SELECT COUNT(*) FROM access_tbl; SELECT COUNT(*) FROM mysql_tbl; | 完全相等 |
| 主鍵自增 | SHOW CREATE TABLE t; 含 AUTO_INCREMENT / 插入新行無需指定 ID | 自增生效 |
| 數據類型 | DESC t; 對比 Access 設計視圖 | 對應正確 (Text→VARCHAR/TEXT, Number→INT/DECIMAL, Date→DATETIME) |
| 索引/外鍵 | SHOW INDEX FROM t; | 關鍵索引保留,外鍵按需重建 |
| 應用煙霧測試 | 修改連接串指向 MySQL,跑核心業務流程 | 無報錯、數據正確 |
Access → MySQL 遷移看似簡單,**「導出只是開始,類型修正是核心,應用驗證才是終點」**。ODBC 導出 + mysqldump 修正 DDL 是零成本方案的經典組合;生產項目強烈建議用 Workbench Migration Wizard 等專用工具,將人為錯誤率壓至最低,並預留回滾窗口與雙寫驗證期。