Я следую за учебником Effective Django с изменением использования MySql вместо sqlite3. После official recommendation Django и учитывая, что я работаю с Python3.4, я использую драйвер mysqlclient. я создал следующую модель, как указано в руководстве:Django: Автоматическое назначение первичного ключа в MySql failing
class Contact(models.Model):
fName = models.CharField(max_length = 30)
lName = models.CharField(max_length = 100)
eMail = models.EmailField()
def str(self):
return ' '.join([self.fName, self.lName])
дБ имеет синхронизированы (мигрировали) ok.Nonetheless, при создании через оболочку контакт
a = Contact('John', 'Doe')
, а затем сохранить его
a.save()
Я получаю следующее сообщение об ошибке:
ValueError: invalid literal for int() with base 10: 'John'
который не появляется, когда я обеспечиваю явное целое число (принимается в качестве первичного ключа ???) в качестве первого аргумента
a = Contact(1, 'John', 'Doe')
Почему не автоматическое назначение рк работает должным образом?
Я использую Django 1.7.7/Python 3.4 на virtualenv Вот настройки:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'addressbook',
'USER': 'abuser',
'PASSWORD': '1234',
'HOST': 'localhost',
'PORT': '3306',
}
}
обидчик был предоставлен все привилегии с опцией грантов на Addressbook (а также на test_addressbook) дб