Django migrate返回1064您的SQL语法有错误

2024-03-28 11:11:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我有三个模型-网站,组织和机构定义如下。问题是,当我运行迁移时,会出现以下错误:

 File "C:\Python27\lib\site-packages\MySQLdb\connections.py", line 42, in defaulterrorhandler
    raise errorvalue
django.db.utils.ProgrammingError: (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 'None) NOT NULL, `site_uid` varchar(50) NOT NULL)' at line 1")

在站点.py在

^{pr2}$

在组织.py在

class Organization(models.Model):

    STATUS = (
        ('Active', 'Active'),
        ('Pending', 'Pending'),
        ('Incomplete', 'Incomplete')
    )

    uid = models.CharField(primary_key=True, max_length=50, unique=True, editable=False, default=uuid.uuid4)
    organization_name = models.CharField(max_length=100, null=False, default='')
    country = models.CharField(max_length=100, null=False, default='')
    postcode = models.CharField(max_length=20, null=False, default='')
    full_address = models.TextField(max_length=50, null=True, blank=True)
    status = models.CharField(max_length=20, choices=STATUS, default='Pending')
    created_on = models.DateTimeField(default=date.today)

    def __str__(self):
        return self.organization_name

在机构.py在

class Institution(models.Model):

    uid = models.CharField(primary_key=True, max_length=50, unique=True, editable=False, default=uuid.uuid4)
    organization_uid = models.ForeignKey(Organization, on_delete=models.CASCADE,
                                         editable=False)
    site_uid = models.ForeignKey(Site, on_delete=models.CASCADE, editable=False)

    def __str__(self):
        return self.uid

我定义模型的方式有什么问题吗?任何提示都将不胜感激!在

编辑:

这是初始迁移文件:

class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='Institution',
            fields=[
                ('uid', models.CharField(default=uuid.uuid4, editable=False, max_length=50, primary_key=True, serialize=False, unique=True)),
            ],
        ),
        migrations.CreateModel(
            name='Organization',
            fields=[
                ('uid', models.CharField(default=uuid.uuid4, editable=False, max_length=50, primary_key=True, serialize=False, unique=True)),
                ('organization_name', models.CharField(default=b'', max_length=100)),
                ('country', models.CharField(default=b'', max_length=100)),
                ('postcode', models.CharField(default=b'', max_length=20)),
                ('full_address', models.TextField(blank=True, max_length=50, null=True)),
                ('status', models.CharField(choices=[(b'Active', b'Active'), (b'Pending', b'Pending'), (b'Incomplete', b'Incomplete')], default=b'Pending', max_length=20)),
                ('created_on', models.DateTimeField(default=django.utils.datetime_safe.date.today)),
            ],
        ),
        migrations.CreateModel(
            name='Site',
            fields=[
                ('uid', models.CharField(editable=False, max_length=50, primary_key=True, serialize=False, unique=True)),
                ('site_name', models.CharField(default=b'', max_length=100)),
                ('country', models.CharField(default=b'', max_length=100)),
                ('postcode', models.CharField(default=b'', max_length=20)),
                ('full_address', models.TextField(default=b'', max_length=200)),
                ('status', models.CharField(choices=[(b'Active', b'Active'), (b'Pending', b'Pending'), (b'Incomplete', b'Incomplete')], default=b'Pending', max_length=20)),
                ('created_on', models.DateTimeField(default=django.utils.datetime_safe.date.today)),
            ],
        ),
        migrations.CreateModel(
            name='Transaction',
            fields=[
                ('uid', models.CharField(editable=False, max_length=50, primary_key=True, serialize=False, unique=True)),
                ('created_on', models.DateTimeField(default=django.utils.datetime_safe.date.today)),
                ('amount', models.DecimalField(decimal_places=2, default=b'0', max_digits=6)),
                ('currency', models.CharField(blank=True, default=b'\xc2\xa3')),
                ('site_uid', models.ForeignKey(db_column=b'site_uid', on_delete=django.db.models.deletion.CASCADE, to='main.Site')),
            ],
        ),
        migrations.CreateModel(
            name='User',
            fields=[
                ('uid', models.CharField(default=uuid.uuid4, editable=False, max_length=50, primary_key=True, serialize=False, unique=True)),
                ('email', models.CharField(blank=True, default=b'', max_length=20)),
                ('password', models.CharField(blank=True, default=b'', max_length=20)),
                ('first_name', models.CharField(max_length=20)),
                ('last_name', models.CharField(max_length=20)),
                ('full_address', models.CharField(max_length=50)),
                ('country', models.CharField(max_length=20)),
                ('status', models.CharField(choices=[(b'Active', b'Active'), (b'Pending', b'Pending'), (b'Locked', b'Locked'), (b'Validated', b'Validated')], default=b'Pending', max_length=20)),
                ('role', models.CharField(choices=[(b'SuperAdmin', b'SuperAdmin'), (b'OrganizationAdmin', b'OrganizationAdmin'), (b'SiteAdmin', b'SiteAdmin'), (b'User', b'User')], default=b'User', max_length=20)),
                ('date_joined', models.DateField(default=django.utils.datetime_safe.date.today)),
                ('password_last_updated', models.DateField(default=django.utils.datetime_safe.date.today)),
                ('last_logged_in', models.DateField(default=django.utils.datetime_safe.date.today)),
                ('institution', models.ForeignKey(db_column=b'institution_uid', on_delete=django.db.models.deletion.CASCADE, to='main.Institution')),
            ],
        ),
        migrations.AddField(
            model_name='institution',
            name='organization_uid',
            field=models.ForeignKey(db_column=b'organization_uid', editable=False, on_delete=django.db.models.deletion.CASCADE, to='main.Organization'),
        ),
        migrations.AddField(
            model_name='institution',
            name='site_uid',
            field=models.ForeignKey(db_column=b'site_uid', editable=False, on_delete=django.db.models.deletion.CASCADE, to='main.Site'),
        ),
    ]

问题可能在于我声明FKs的方式,因为除了FKs之外,所有字段都出现在mysql表中。在


Tags: djangonamefalsetruedefaultdbuidon
1条回答
网友
1楼 · 发布于 2024-03-28 11:11:01

我的模型的问题是,我在我的一个模型中定义了一个名为currency的字段,其中我为一个charField设置了一个默认值'£'

currency = models.CharField(null=False, blank=True, default='£')

谢谢大家的帮助!在

相关问题 更多 >