2011-12-20 3 views
-1

Я создаю таблицу в использовании MySQLDb в PythonMySQLdb является ошибка в создании первичного ключа, который является слишком длинным

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

Что такое и автоинкрементный идентификатор? dbLink - это URL-адрес страницы: «http://dbpedia.org/resource/Madigan%27s_Millions» –

+0

Если я последую вашему подходу и попытаюсь сделать dbLink как Unqiue, Mysql все еще спрашивает меня, что размер больше, чем максимальная длина –

0

Первичный ключ в MySQL - это longint. Не используйте значение longest, что это.

0

Вы можете использовать автоматическое увеличение значения id для строкового поля, которое вы хотите назначить в качестве первичного ключа. Также это поможет вам, создав лучший индекс для первичного ключа, если вы этого захотите.