2016-06-12 43 views
0

我正在嘗試使用SQL文件在phpMyAdmin中向我的數據庫添加一個表,然後用數據填充它。我已經成功地做了很多次,但是我遇到了一個嚴重的問題,無論我嘗試什麼,我都找不到解決方案。以前我用'int'作爲主鍵類型,但現在我必須使用'char'作爲我的主鍵類型。這是問題似乎來自哪裏。我在網上查找並嘗試了幾種解決方案,但都有不同的結果。所有結果都等於失敗。SQL - 'char'auto_increment問題

我已經在下面顯示了我的原始代碼,失敗並導致我在網上尋找解決方案,但無濟於事。

-- 
-- Table structure for table `practice` 
-- 

CREATE TABLE `practice` (
`practice_Id` char(2) NOT NULL auto_increment, 
`Practice_Name` varchar(20) NOT NULL, 
`Practice_Address` varchar(50) NOT NULL, 
PRIMARY KEY (`practice_id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ; 

-- 
-- Dumping data for table `practice` 
-- 

INSERT INTO `practice` VALUES(P1, 'Practice Head Office', '27, The Hill, Glasgow'); 
INSERT INTO `practice` VALUES(P2, 'Practice Unit 1', 'Unit 1, Houston Estate, Glasgow'); 

當我嘗試導入該文件到我的數據庫,我得到如下回應:

#1063 - Incorrect column specifier for column 'practice_Id' 

現在我發現這非常的網站解決這一點。只需將unsigned添加到auto_increment中,它應該可以像auto_increment一樣適用於int和float。我將其添加到文件中,然後嘗試再次導入它。這再次失敗給了我更多的錯誤,這些錯誤如下所示:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'unsigned auto_increment, 
`Practice_Name` varchar(20) NOT NULL, 
`Practice_Add' at line 6 

我試過單獨簽名留出AUTO_INCREMENT但我得到了與上述相同的結果。

我真的需要幫助,因爲這似乎不可能通過。沒有語法錯誤,所以沒有任何意義。任何問題只是問,但我已經把我的嘗試以及我找到的所有解決方案。我有這個問題的其他SQL文件,所以真的這是我和我最後一項工作的巨大障礙。

+1

您不必擁有char主鍵。您可以繼續使用常規的數字自動遞增主鍵,並將另一個字符列標記爲「唯一」。 –

回答

0

這是不可能通過的。自動增量僅適用於數字字段。在語義上,「遞增」一個字符串是沒有意義的。是的,你可以說

'x' + 1 = 'y' 

爲單個字符,但如何增加一個字符字符串?您如何評價

"Bob" + 3 

例如?

+0

我明白你的觀點。我將如何解決我遇到的問題?我是否忽略了未簽名的auto_increment,還是有其他我應該做的事情? – DAN212

+0

你爲什麼從'int'切換到'char'? –

+0

因爲所需的ID現在不只是一個數字。例如,現在是P1而不是01。我已經從文件中刪除了無符號的auto_increment,並且該文件已成功導入到數據庫中。謝謝。這麼簡單但很難:)至少我希望它是如何工作的。 – DAN212