2011-12-20 37 views
-1

我在使用Python MySQLdb的MySQLdb的錯誤是在做一個主鍵是太長

tdesc = "CREATE TABLE " + self.table_name + " (" 
     tdesc = tdesc + "title VARCHAR(500), " 
     tdesc = tdesc + "DbLink VARCHAR(500), " 
     tdesc = tdesc + "abstract VARCHAR(3000), " 
     tdesc = tdesc + "WikiLink VARCHAR(5000)," 
     tdesc = tdesc + "PRIMARY KEY (DbLink)" 
     tdesc = tdesc + ")" 
     self.cursor = self.conn.cursor() 

文件「C創建一個表:\ Python27 \ LIB \站點包\ MySQLdb的\ cursors.py 「,第174行,執行 self.errorhandler(self,exc,value) 文件」C:\ Python27 \ lib \ site-packages \ MySQLdb \ connections.py「,第36行,在defaulterrorhandler中 raise errorclass,errorvalue OperationalError:(1071,'指定密鑰太長,最大密鑰長度是767字節')

是的,我的密鑰有點兒長串。有人能指導我如何處理這個關鍵問題?

回答

2

沒有告訴我們它是什麼,DBLINK列是應該做的一種很難解決這個...

您的密鑰過長,有關於它板上釘釘。您可以做兩件事,無論是讓DBLink列變小。或者,也可以創建一個新的主鍵,例如自動遞增的ID,併爲您的DBLink列添加一個唯一約束。

+0

什麼是和自動遞增的ID?例如,dbLink是一個頁面的URL:「http://dbpedia.org/resource/Madigan%27s_Millions」 – 2011-12-21 05:33:54

+0

如果我遵循你的方法並嘗試將dbLink設置爲Unqiue,那麼Mysql仍會問我規模是否大於最大長度 – 2011-12-21 18:41:28

0

MySQL中的主鍵是longint。不要用這個最長的值。

0

您可以使用自動增加的id值作爲要分配爲主鍵的字符串字段。此外,如果您需要,還可以通過在主鍵上創建更好的索引來幫助您。

相關問題