【问题标题】:Exception Value: (1054, "Unknown column 'social_auth_usersocialauth.created' in 'field list'")异常值:(1054,“'字段列表'中的未知列'social_auth_usersocialauth.created'”)
【发布时间】:2020-11-22 13:27:57
【问题描述】:

在尝试实现 Django Social 时,我想我错过了某个地方的迁移,现在当我收到 twitter 重定向到该站点时,我收到以下错误。

Exception Value: (1054, "Unknown column 'social_auth_usersocialauth.created' in 'field list'")

我可以看到表已经创建,数据库表中没有两个值:

    mysql> describe social_auth_usersocialauth;
+------------+--------------+------+-----+---------+----------------+
| Field      | Type         | Null | Key | Default | Extra          |
+------------+--------------+------+-----+---------+----------------+
| id         | int          | NO   | PRI | NULL    | auto_increment |
| provider   | varchar(32)  | NO   | MUL | NULL    |                |
| uid        | varchar(255) | NO   |     | NULL    |                |
| extra_data | longtext     | NO   |     | NULL    |                |
| user_id    | int          | NO   | MUL | NULL    |                |
+------------+--------------+------+-----+---------+----------------+
5 rows in set (0.17 sec)

我想运行自定义迁移以将更新中缺少的两个字段添加到社交身份验证迁移,

class Migration(migrations.Migration):

dependencies = [
    ('dbdisplay', '0001_initial'),
    ('social_django', '0008_partial_timestamp'),
]

operations = [
    migrations.AddField(
        model_name='usersocialauth',
        name='created',
        field=models.DateTimeField(auto_now_add=True, default=mytz.now),
        preserve_default=False,
    ),
    migrations.AddField(
        model_name='usersocialauth',
        name='modified',
        field=models.DateTimeField(auto_now=True),
    ),

]

但是迁移不理解我所指的模型,因为我运行迁移时出现错误:

KeyError: ('social_django', 'association')

如何在表不在应用命名空间中的迁移中使用 AddField?

【问题讨论】:

    标签: python-3.x django twitter


    【解决方案1】:

    问题是由于旧版本的 python-social-auth(在这种情况下是 social-core 和 social-app-django)造成的。 social_auth_usersocialauth 表缺少以下字段:

    created = models.DateTimeField(auto_now_add=True)
    modified = models.DateTimeField(auto_now=True)
    objects = UserSocialAuthManager()
    

    更新您的 requirements.txt 或 pip 安装最新版本。

    social-auth-app-django==5.0.0
    social-auth-core==4.1.0
    

    然后

    pip install -r requirements.txt
    

    并在 django 中运行 migrate 命令

    python manage.py migrate
    

    然后检查您的数据库表,然后您会发现缺少的列。

    【讨论】:

      猜你喜欢
      • 2020-10-27
      • 2018-10-21
      • 1970-01-01
      • 2021-01-26
      • 2014-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多