Django&Mysql

3 篇文章 0 订阅
1 篇文章 0 订阅

今天我在做本机windows下的django项目连接linux云服务器上的mysql数据库的时候,遇到了一些错误
在这里记录

问题1
连接数据库后,当我们成功创建一张表,但是我们在数据库中一不下心将表删除了。然后我们使用

python manage.py makemigrations
python manage.py migrate

去重新生成表的时候,发现我们无法重新生成这张表,

(django_xadmin_pb-y4pNUwd9) C:\Users\Alpaca\Desktop\pyweb项目\django_xadmin_pb\one_project>python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, polls, sessions
Running migrations:
  No migrations to apply.

这个时候我们需要以下几个步骤
1.删除数据库内所有的表(因为数据库表之间有关联,所以需要多删除几次)
2.重新在django项目下使用这两条命令,生成成功

Mysql数据库在创建数据表的时候无法创建插入中文内容
例子
这里写图片描述
当我们使用django创建这张model的时候,出现错误


  File "C:\Users\Alpaca\.virtualenvs\django_xadmin_pb-y4pNUwd9\lib\site-packages\MySQLdb\cursors.py", line 374, in _do_query
    db.query(q)
  File "C:\Users\Alpaca\.virtualenvs\django_xadmin_pb-y4pNUwd9\lib\site-packages\MySQLdb\connections.py", line 277, in query
    _mysql.connection.query(self, query)
django.db.utils.OperationalError: (1366, "Incorrect string value: '\\xE5\\x93\\x88\\xE5\\x93\\x88' for column 'name' at row 1")

部分错误我删除了,主要看最后几句,他报错原因是说,我的哈哈哈哈编码不能创建在name里面
查看帖子之后说是mysql在安装之后默认latin1编码,但中文的话我们需要用utf8编码
因此我们需要接下来几个步骤去解决

查看错误原因

mysql> show variables like 'character_set%';
或者
mysql> status;

这里写图片描述

解释
| character_set_client | utf8 #客户端字符集
| character_set_connection | utf8 #链接字符集
| character_set_database | utf8 #数据库字符集,配置文件指定或者创建时指定
| character_set_results | utf8 #返回结果字符集
| character_set_server | utf8 #服务器字符集,配置文件,或者创建库,表时候指定

1.进入到/etc/mysql/my.cnf,并添加


[client]   

default-character-set =utf8  

[mysql]   

default-character-set =utf8  

[mysqld]  

collation-server = utf8_unicode_ci  
init_connect ='SET NAMES utf8'  
character_set_server=utf8  

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

可以看出这个my.cnf应该是个人配置,是继承于系统默认配置的,既然这样我们只要修改这里的内容就好了

2.重启mysql

service mysql restart

查看是否成功

mysql> status;

这里写图片描述

已经变成了utf-8形式了

注意!这里有一个坑,我们虽然已经配置成功了,但是这样的配置只会作用于之后你所创建的数据库表,在这个配置之前的数据库表都不适用。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值