文章仅供学习,如有错误,欢迎指出
今天我在做本机windows下的django项目连接linux云服务器上的mysql数据库的时候,遇到了一些错误 在这里记录
问题1 连接数据库后,当我们成功创建一张表,但是我们在数据库中一不下心将表删除了。然后我们使用
python manage.py makemigrationspython manage.py migrate复制代码
去重新生成表的时候,发现我们无法重新生成这张表,
(django_xadmin_pb-y4pNUwd9) C:\Users\Alpaca\Desktop\pyweb项目\django_xadmin_pb\one_project>python manage.py migrateOperations to perform: Apply all migrations: admin, auth, contenttypes, polls, sessionsRunning 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形式了
#注意!这里有一个坑,我们虽然已经配置成功了,但是这样的配置只会作用于之后你所创建的数据库表,在这个配置之前的数据库表都不适用。