首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >django 2 mysql数据库后端不接受0作为AutoField错误的值。

django 2 mysql数据库后端不接受0作为AutoField错误的值。
EN

Stack Overflow用户
提问于 2019-01-18 11:30:26
回答 1查看 3.3K关注 0票数 0

我不知道为什么: makemigrations命令工作正常,但是当我从浏览器中插入一些东西时,终端输出错误消息.

文件"D:\software\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\django\db\backends\mysql\operations.py",第172行,在validate_autopk_value引发ValueError(‘数据库后端不接受0为’ValueError:数据库后端不接受0作为AutoField的值。

在我的笔记/模型中

代码语言:javascript
运行
复制
class notecategory(models.Model):
    categoryname = models.CharField(max_length=150,null=False,default="")

    isPublic = models.BooleanField()
    owner = models.ForeignKey(User,on_delete=models.CASCADE,null=True,related_name='%(class)s_requests_created')


class note2(models.Model):
    category = models.ForeignKey(notecategory,on_delete=models.CASCADE,null=True)
    content = models.CharField(max_length =settings.CONSTANT_DICT['noteContentLen'] ,null=True)
    book = models.ForeignKey(book,on_delete=models.CASCADE,null=True)
    chapter = models.ForeignKey(chapter,on_delete=models.CASCADE,null=True)
    sentence = models.ForeignKey(sentence,on_delete=models.CASCADE,null=True)
    anchorAt = models.IntegerField(null=True)
    highlightLen = models.IntegerField(null=True)
    language = models.ForeignKey(language,on_delete=models.CASCADE, null=True)
    owner = models.ForeignKey(User, on_delete=models.CASCADE, null=True,related_name='%(class)s_requests_created')

在我的笔记/视图中

代码语言:javascript
运行
复制
toSave = note2(book_id=int(bookId),chapter=chapterInstance, sentence_id = int(sentenceId),
              category_id=int(categoryId), content=userInputNoteContent,anchorAt = int(anchorAt),highlightLen=int(highlightLen),
              language=languageInstance,
              owner=userInstance)
toSave.save()

在注意/迁移/001_initial.py中

代码语言:javascript
运行
复制
class Migration(migrations.Migration):

    initial = True

    dependencies = [
        ('sentence', '0008_auto_20190118_1608'),
        ('language', '0001_initial'),
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name='note2',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('content', models.CharField(max_length=150, null=True)),
                ('anchorAt', models.IntegerField(null=True)),
                ('highlightLen', models.IntegerField(null=True)),
                ('book', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='sentence.book')),
            ],
        ),
        migrations.CreateModel(
            name='notecategory',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('categoryname', models.CharField(default='', max_length=150)),
                ('isPublic', models.BooleanField()),
                ('owner', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='notecategory_requests_created', to=settings.AUTH_USER_MODEL)),
            ],
        ),
        migrations.AddField(
            model_name='note2',
            name='category',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='note.notecategory'),
        ),
        migrations.AddField(
            model_name='note2',
            name='chapter',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='sentence.chapter'),
        ),
        migrations.AddField(
            model_name='note2',
            name='language',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='language.language'),
        ),
        migrations.AddField(
            model_name='note2',
            name='owner',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='note2_requests_created', to=settings.AUTH_USER_MODEL),
        ),
        migrations.AddField(
            model_name='note2',
            name='sentence',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='sentence.sentence'),
        ),
    ]

全跟踪我粘贴了来自另一个类似模型/应用程序的错误,因为我没有复制原始消息

18/Jan/2019 19:46:47 "GET /readbook/?HTTP/1.1“2005809内部服务器错误: /savenote/ Traceback (最近一次调用):文件"D:\software\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\django\core\handlers\exception.py",行34,在内部响应=get_response(请求)文件第126行中,在_get_response response = self.process_exception_by_middleware(e )中,请求)文件"D:\software\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\django\core\handlers\base.py",第124行,在_get_response response = wrapped_callback(request,*callback_args,**callback_kwargs)文件"D:\pythonworkspace\notetaking\read\views.py",第143行中,在savenote文件() "D:\software\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\django\db\models\base.py",第717行中,在保存force_update=force_update中,文件"D:\software\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\django\db\models\base.py",第747行,在save_base updated = self._save_table(raw,cls,force_insert,force_update )中使用,文件"D:\software\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\django\db\models\base.py",第830行,在_save_table result = self._do_insert(cls._base_manager,using,字段,update_pk,( raw)文件"D:\software\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\django\db\models\base.py",行868,在_do_insert using=using,raw=raw)文件"D:\software\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\django\db\models\manager.py",行82,在"D:\software\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\django\db\models\query.py",返回getattr(self.get_queryset(),name)(*args,**kwargs)文件manager_method行1133,在query.get_compiler(using=using).execute_sql(return_id)返回_insert文件"D:\software\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\django\db\models\sql\compiler.py",第1284行,在execute_sql中,文件"D:\software\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\django\db\models\sql\compiler.py",第1237行中的self.as_sql()在"D:\software\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\django\db\models\sql\compiler.py",文件as_sql中的self.query.objs文件1237行中,在"D:\software\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\django\db\models\sql\compiler.py",文件第1236行中,在self.prepare_value(字段,self.pre_save_val(字段),文件"D:\software\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\django\db\models\sql\compiler.py",第1178行中的字段,以prepare_value值=field.get_db_prep_save(值,)文件"D:\software\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\django\db\models\fields\related.py",第937行,在get_db_prep_save返回self.target_field.get_db_prep_save(值,)文件"D:\software\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\django\db\models\fields__init__.py",行790,在get_db_prep_save返回self.get_db_prep_value(value,connection=connection,文件"D:\software\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\django\db\models\fields__init__.py",第957行,在get_db_prep_value value = connection.ops.validate_autopk_value( value ) File ValueError第172行中,validate_autopk_value引发ValueError(‘数据库后端不接受0为’ValueError:数据库后端不接受0作为AutoField值。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-18 12:04:21

数据库不能接受pkforeign key值作为0。但是您尝试将0赋值为外键字段的值。因此,出现了错误。

要解决这个问题,请为pkforeign key字段类型intbig int指定值>0。还补充说,如果您使用UUID作为您的pk,那么您也不能指定0作为值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54253092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档