當(dāng)我們使用mysql客戶端將一個(gè).sql文件導(dǎo)入到當(dāng)前的數(shù)據(jù)庫中,有時(shí)候會(huì)遇到導(dǎo)入后覆蓋了已經(jīng)存在的表的情況。
mysql -u root -p database_name< dump.sql
以上是將.sql文件導(dǎo)入到當(dāng)前的數(shù)據(jù)庫的命令,其中database_name是當(dāng)前操作的數(shù)據(jù)庫名字,dump.sql是待導(dǎo)入的.sql文件的名字。
導(dǎo)入.sql文件可能會(huì)遇到以下錯(cuò)誤:
ERROR 1050 (42S01) at line 33: Table ‘table_name’ already exists
這個(gè)錯(cuò)誤的原因是.sql文件中包含著一個(gè)已存在的表名。當(dāng)mysql客戶端運(yùn)行到這個(gè)表時(shí),就會(huì)跳出錯(cuò)誤信息,提示我們這張表已經(jīng)存在。如果繼續(xù)導(dǎo)入,就會(huì)覆蓋掉原來的表。
一個(gè)常規(guī)的解決方法是刪掉原有的表。這需要謹(jǐn)慎,因?yàn)閯h除操作是不可逆的。因此,我們需要在執(zhí)行前備份舊的表數(shù)據(jù)。
mysqldump -u root -p database_name old_table_name >backup.sql
以上是備份命令,其中old_table_name是當(dāng)前數(shù)據(jù)庫中的表名。這個(gè)命令會(huì)將這個(gè)表的數(shù)據(jù)導(dǎo)出到backup.sql文件中。如果之后需要恢復(fù),可以用以下命令:
mysql -u root -p new_table_name< backup.sql
其中,new_table_name是我們新建的表名。
備份完成后,可以安全地刪除舊表。刪表語句如下:
DROP TABLE old_table_name;
刪除指令執(zhí)行之前,請確認(rèn)數(shù)據(jù)庫的名字與表名字。
經(jīng)過以上步驟之后,可以重新執(zhí)行導(dǎo)入.sql文件的命令,這次就不會(huì)出現(xiàn)表已存在的錯(cuò)誤了。