Python Django:MySql中主键的自动分配失败

Python Django:MySql中主键的自动分配失败,python,mysql,django,Python,Mysql,Django,我遵循教程的内容,改变了使用MySql而不是sqlite3。 遵循Django的思想,考虑到我正在使用Python3.4,我正在使用驱动程序。 我创建了以下模型,如教程所示: class Contact(models.Model): fName = models.CharField(max_length = 30) lName = models.CharField(max_length = 100) eMail = models.EmailField() de

我遵循教程的内容,改变了使用MySql而不是sqlite3。 遵循Django的思想,考虑到我正在使用Python3.4,我正在使用驱动程序。 我创建了以下模型,如教程所示:

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])
db已同步(迁移)正常。尽管如此,当通过shell创建联系人时

a = Contact('John', 'Doe')
然后保存它

a.save()
我得到以下错误:

ValueError: invalid literal for int() with base 10: 'John'
当我提供一个显式整数(作为主键???)作为第一个参数时,它不会出现

a = Contact(1, 'John', 'Doe')
为什么自动pk分配不能正常工作

我正在virtualenv上使用Django 1.7.7/Python 3.4 以下是设置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'addressbook',
        'USER': 'abuser',
        'PASSWORD': '1234',
        'HOST': 'localhost',
        'PORT': '3306',
}
}


滥用者已通过地址簿上的grant选项被授予所有权限(同样在test_addressbook上)db

要创建模型实例,您应该使用关键字参数而不是位置参数:

a = Contact(fName='John', lName='Doe')
a.save()

要创建模型实例,应使用关键字参数而不是位置参数:

a = Contact(fName='John', lName='Doe')
a.save()

要创建模型实例,应使用关键字参数而不是位置参数:

a = Contact(fName='John', lName='Doe')
a.save()

要创建模型实例,应使用关键字参数而不是位置参数:

a = Contact(fName='John', lName='Doe')
a.save()