mysql導(dǎo)入數(shù)據(jù)庫(kù)詭異出錯(cuò)一例
【故障描述】用戶通過phpmyadmin導(dǎo)入數(shù)據(jù)庫(kù)無法導(dǎo)入,嘗試導(dǎo)入出錯(cuò)如下:
ERROR 1054 (42S22) at line 1836:Unknown column 'catid' in 'field list'
編輯器打開sql文件查看1836行上下:
檢查sql語(yǔ)句沒有問題,于是查看了一下導(dǎo)入的【*_liuyan】這個(gè)表,發(fā)現(xiàn)只有9個(gè)字段,如下圖所示:
通過以上兩圖對(duì)比很明顯看到問題所在了:【創(chuàng)建表的sql語(yǔ)句一共有21個(gè)字段,但是創(chuàng)建好的表卻只有9個(gè)字段,因此在插入數(shù)據(jù)的時(shí)候因?yàn)闆]有catid字段而報(bào)錯(cuò)】那么,為什么只有9個(gè)字段呢?
【解決過程】
刪除所有表,直接將創(chuàng)建*_liuyan表的sql語(yǔ)句及插入語(yǔ)句單獨(dú)執(zhí)行,成功導(dǎo)入未出錯(cuò);再次說明SQL語(yǔ)句根本沒有什么問題。
再次檢查sql文件,當(dāng)向上拉的時(shí)候看到了下圖:
一下子明了了,也就是【在創(chuàng)建*_liuyan表之前還有一段sql語(yǔ)句創(chuàng)建一個(gè)表*_Liuyan,而這個(gè)表只有9個(gè)字段】,【W(wǎng)indows主機(jī)mysql默認(rèn)是表名大小寫不敏感,Linux主機(jī)mysql敏感】,因此當(dāng)創(chuàng)建【*_Liuyan】這個(gè)表后就不會(huì)再創(chuàng)建【*_liuyan】這個(gè)表,肯定就只有9個(gè)字段,顯然后邊的插入語(yǔ)句肯定會(huì)報(bào)錯(cuò)了。
【總結(jié)】
盡量不要使用大小寫來區(qū)分的同名表名;
遇到問題一定要細(xì)心有耐心;
下一篇:MySQL常見錯(cuò)誤處理方法