mysql--字符集修改,utf8

4 篇文章 0 订阅

TypeError: init() missing 1 required positional argument: ‘on_delete’

  • 来上源码
class User(models.Model):
    gender = (
        ('male',"男"),
        ('female',"女")
    )
    name = models.CharField(max_length=128,unique=True)
    password = models.CharField(max_length=256)
    email = models.EmailField(unique=True)
    sex = models.CharField(max_length=32,choices=gender,default="男")
    c_time = models.DateTimeField(auto_now_add=True)
    has_confirmed = models.BooleanField(default=False)

    def __str__(self):
        return self.name

    class Meta:
        ordering = ["-c_time"]
        verbose_name = "用户"
        verbose_name_plural = "用户"
class ConfirmString(models.Model):
    code = models.CharField(max_length=256)
    user = models.OneToOneField('User',on_delete=models.DO_NOTHING)
#这里报错,因为你使用的是外检,所以你需要在应用后添加on_delete = models.CASCADE
    c_time = models.DateTimeField(auto_now_add=True)


    def __str__(self):
        return self.user.name + ":  "+self.code#设定哈希后的哈希值
    class Mata:
        #c_time是代表的是注册的提交时间
        ordering = ["-c_time"]
        verbose_name = "确认码"
        verbose_name_plural = "确认码"
  • 为啥会报错,很简单,django官方文档,你值得拥有,这里我们看一下user = models.OneToOneField(‘User’,on_delete=models.DO_NOTHING)这是我加了on_detele才成功的,在django2.0之前,在app中并没有要求一定要有on_detele参数,可有可无,但是2.0之后,官方文档要求一定要输入这个参数,参数我推荐是用DO_NOTHING意思是没有影响

django 保存中文到mysql 报错django.db.utils.DatabaseError: Incorrect string value: '\xE5\xBE\x88\xE7\x81\xB5

  • 一眼看出,我自己犯得错就是字符编码问题,所以我需要解决问题
  • a)查看数据库的编码:show create database databaseName;
    b)修改数据库编码: alter database databaseName default character set utf8 collate utf8_general_ci;
  • 同时,你改变了编码只是一个数据库的,我们希望改变所有的,上代码
show variables like '%char%';#显示你数据库字符集列表
set character_set_client=utf8;
  set character_set_connection=utf8;
  set character_set_database=utf8;
  set character_set_results=utf8;
  set character_set_server=utf8;
  set character_set_system=utf8;
  set collation_connection=utf8;
  set collation_database=utf8;
  set collation_server=utf8;
上面代码分行写,分别运行,不要管警告
  • 修改数据库字符集:
    ALTER DATABASE db_name DEFAULT CHARACTER SET character_name [COLLATE …];
    如:
    ALTER database test CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
  • 修改表的默认字符集:
    ALTER TABLE tbl_name DEFAULT CHARACTER SET character_name [COLLATE…];
    如:ALTER TABLE logtest DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
  • 修改字段的字符集:
    ALTER TABLE tbl_name CHANGE c_name c_name CHARACTER SET character_name [COLLATE …];
    如:ALTER TABLE logtest CHANGE title title VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci;
  • 最后提醒你们,使用navicat时候一定一定要注意,你自己设计的字符集,一定要选好
  • 在django的最后,你们最好重建一个数据库单独对某一个项目开放
  • python3 manage.py migrate在数据库里面建立模型
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值