创建超级用户失败报错"Data too long for column 'gender' at row 1")

来源:4-10 数据表生成以及apps目录建立

nankjune

2019-06-23

createsuperuser, 输入用户名,邮箱,密码之后提示以下错误
图片描述
使用的是anaconda3下创建的py2.7虚拟环境,django1.9版本
代码中唯一使用了gender的字段是在user的models中, UserProfile的gender字段,已经将其长度改成了10然而依然报这个错误。

麻烦老师看看是什么问题,如何解决,谢谢。

写回答

2回答

nankjune

提问者

2019-06-23

已解决。

发现makemigrations以后,user 目录下migration文件中产生了很多auto文件,我每makemigrations一次,就增加一个,而0001 initial文件没有改变, 同时数据库也没有改变。

于是我进行了以下步骤

  1. 将auto文件都删掉了,之留下了0001_initial,

  2. 手动修改了0001_initial中gender的数据长度

  3. 再次makemigrations

  4. 没有报错,于是migrate

  5. 完成后在数据库中审查,发现长度依然没变,于是继续手动修改数据库中的字符长度

  6. createsuperuser 输入用户名邮箱密码,没有报错~

  7. 完成


0
1
bobby
这里一般initial是第一次做migrations生成的文件,后面没做一次修改都会有一个auto的py文件生成,不会修改之前的文件的,如果每次都是通过model和migrations修改数据库而不是手动去通过navicat修改数据库的话 是不会造成这个地方出错的
2019-06-26
共1条回复

Ethreal

2019-06-23

你是怎么改的这个字段呢?是直接该的数据库还是通过数据库迁移命令 make miration make migrate 呢  对数据库做任何修改的操作 都要通过orm进行同步 

0
1
nankjune
是通过ORM 改的,修改了models里的长度, 然后makemigrations, migrate。
2019-06-23
共1条回复

Python3.6+django+xadmin,打造在线教育平台

【毕设】Python 2.7到3.6 完美适配,Django升级2.0

3677 学习 · 4038 问题

查看课程