2010-02-10 41 views
0

我有一個.sql文件,我想把它加載到MySQL數據庫中。我不知道它是從哪個數據庫(MySQL或MS-SQL)創建的。對於MySQL和SQL,.sql文件是否有所不同?

現在,我試圖將該文件導入MySQL數據庫。它在導入和執行該文件時顯示錯誤。

Q1. So, my question is whether the .sql file generated from MySQL and MS-SQL are different?

注意:我使用SQLYog軟件(用於MySQL的圖形界面)導入文件。

以下是錯誤:

Query: CREATE TABLE ads ( id bigint(20) NOT NULL auto_increment, city_id int(11) NOT NULL, type text collate utf8_bin NOT NULL, town text collate utf8_bin NOT NULL, address text collate utf8_bin NOT NULL, price text collate utf8_bin NOT NULL, info text collate utf8_bin NOT NULL, link text collate utf8_bin NOT NULL, hasImage int(11) NOT NULL, language varchar(2) collate utf8_bin NOT NULL, time_added varchar(255) collate utf8_bin NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1

錯誤發生在:2009-09-08 17點41分01秒 線no.:35 錯誤代碼:1050 - 表 '廣告' 已存在

Query: CREATE TABLE ads ( id bigint(20) NOT NULL auto_increment, city_id int(11) NOT NULL, type text collate utf8_bin NOT NULL, town text collate utf8_bin NOT NULL, address text collate utf8_bin NOT NULL, price text collate utf8_bin NOT NULL, info text collate utf8_bin NOT NULL, link text collate utf8_bin NOT NULL, hasImage int(11) NOT NULL, language varchar(2) collate utf8_bin NOT NULL, time_added varchar(255) collate utf8_bin NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1

錯誤發生在:2009-09-08 17時41分21秒 no.:35 錯誤代碼行:1050 - 表 '廣告' 已存在

Query: CREATE TABLE ads ( id bigint(20) NOT NULL auto_increment, city_id int(11) NOT NULL, type text collate utf8_bin NOT NULL, town text collate utf8_bin NOT NULL, address text collate utf8_bin NOT NULL, price text collate utf8_bin NOT NULL, info text collate utf8_bin NOT NULL, link text collate utf8_bin NOT NULL, hasImage int(11) NOT NULL, language varchar(2) collate utf8_bin NOT NULL, time_added varchar(255) collate utf8_bin NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1

錯誤發生在:2009-09-08 17時41分35秒 no.:35 錯誤代碼行:1050 - 表 '廣告' 已存在

Query: CREATE TABLE ads ( id bigint(20) NOT NULL auto_increment, city_id int(11) NOT NULL, type text collate utf8_bin NOT NULL, town text collate utf8_bin NOT NULL, address text collate utf8_bin NOT NULL, price text collate utf8_bin NOT NULL, info text collate utf8_bin NOT NULL, link text collate utf8_bin NOT NULL, hasImage int(11) NOT NULL, language varchar(2) collate utf8_bin NOT NULL, time_added varchar(255) collate utf8_bin NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1

錯誤發生在:2009 -09-08 17時42分07秒 線no.:35 錯誤代碼:1050 - 表「廣告」已存在

Query: 1 Stanford University 6700 http://www.orkut.co.in . . .

+1

爲什麼不在你的問題中包含錯誤信息? – bernie 2010-02-10 06:12:56

+0

「MySQL和SQL」:如「Microsoft SQL Server」中的「SQL」? – Thilo 2010-02-10 06:13:19

+1

@Thilo @Adam我編輯了這個問題。 – 2010-02-10 06:18:52

回答

3

文件擴展名「.sql」實質上是無意義的,它只是存在,因此知道這個文件是什麼。它只是一個純文本文件,包含SQL,您可以在記事本中打開它。因此,沒有特殊的「mysql」或「sql server」擴展。

您遇到的錯誤"Table 'ads' already exists"是因爲您試圖創建一個已經存在於數據庫中的表。 (你看過這個錯誤嗎?)你有幾種選擇:

  1. 更改SQL這樣:

    CREATE TABLE IF NOT EXISTS ads (id bigint(20) ... 
    
  2. 更改SQL這樣:

    DROP TABLE IF EXISTS ads; 
    CREATE TABLE ads (id bigint(20) ... 
    
  3. 清除首先在數據庫中列出所有表格。

+0

是的,我讀過錯誤,但沒有名稱爲'ads'的表.. – 2010-02-10 06:24:31

+0

我仍然刪除了整個數據庫,並嘗試重新載入它,但同樣的錯誤發生 – 2010-02-10 06:25:07

+0

@Yatendra - 有再看一次。確保選擇了正確的數據庫。此外,請檢查您的SQL腳本中沒有多次創建該表。 – nickf 2010-02-10 06:51:40

1

這要看軟件導出此文件。還要檢查文件的標題是哪個軟件執行的,並分析語法以確定此文件屬於哪個文件。還要注意,SQL是microsoft sql server。

+0

@Sarfraz我檢查了標題。頭文件如下:......-- phpMyAdmin SQL Dump - 版本3.2.4 - http://www.phpmyadmin.net - - 主機:loc – 2010-02-10 06:22:59

+0

@Goel:Then你應該更好地使用phpmyadmin導入這個文件,它肯定會工作沒有錯誤。謝謝 – Sarfraz 2010-02-10 06:50:11

2

MySQL和Microsoft SQL Server不幸地實現了不同的SQL方言。所以,你的問題的答案:

Q1. So, my question is whether the .sql file generated from MySQL and MS-SQL are different?

是「是的,很有可能」。然而,你顯示的具體錯誤似乎是由於35行上的「Create table」語句被一次又一次地執行,並且不能依賴於這種方言差異,所以原因必須是其他的(如我所不熟悉的「SQLYog」程序所期望的輸入中的錯誤或細微的格式差異)。

1

是的。 SQL從數據庫到數據庫的差異很大。儘管大多數數據庫都支持大部分數據庫,但每個數據庫都有許多不兼容的非標準功能和功能,超出了標準規定的範圍。

也有許多遷移文檔繳費:

MSSQL => MySQL的: http://dev.mysql.com/tech-resources/articles/migrating-from-microsoft.html

的MySQL => MSSQL: http://technet.microsoft.com/en-us/library/cc966396.aspx

有兩個明顯的事情在你的CREATE TABLE語句MSSQL不支持立即跳出:

ENGINE=InnoDB 
AUTO_INCREMENT=1 

這些都是特定於MySQL的語句。

0

它看起來像你的腳本多次執行(因爲錯誤發生的行號每次都是相同的)。該錯誤還表明您正在嘗試定義一個已存在的表,這可能是第一次運行此腳本。您可能需要查看腳本如何運行以查看可能會多次執行的原因。

SQL本身對於MySQL來說看起來很好。它不會與SQL Server一起運行。