django所遇到问题简单总结
Posted di2wu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django所遇到问题简单总结相关的知识,希望对你有一定的参考价值。
问题虽小,但却值得深思
一、改mysql密码
方法1: 用SET PASSWORD命令
首先登录MySQL。
格式:mysql> set password for 用户名@localhost = password(‘新密码‘);
例子:mysql> set password for [email protected] = password(‘123‘);
方法2:用mysqladmin
格式:mysqladmin -u用户名 -p旧密码 password 新密码
例子:mysqladmin -uroot -p123456 password 123
方法3:用UPDATE直接编辑user表
首先登录MySQL。
mysql> use mysql;
mysql> update user set password=password(‘123‘) where user=‘root‘ and host=‘localhost‘;
mysql> flush privileges;
方法4:在忘记root密码的时候,可以这样
以windows为例:
1. 关闭正在运行的MySQL服务。
2. 打开DOS窗口,转到mysqlin目录。
3. 输入mysqld --skip-grant-tables 回车。--skip-grant-tables 的意思是启动MySQL服务的时候跳过权限表认证。
4. 再开一个DOS窗口(因为刚才那个DOS窗口已经不能动了),转到mysqlin目录。
5. 输入mysql回车,如果成功,将出现MySQL提示符 >。
6. 连接权限数据库: use mysql; 。
6. 改密码:update user set password=password("123") where user="root";(别忘了最后加分号) 。
7. 刷新权限(必须步骤):flush privileges; 。
8. 退出 quit。
9. 注销系统,再进入,使用用户名root和刚才设置的新密码123登录。
我选择i了方法二、一般皆如此,没有设置权限,结果导致了后面django在python manage.py makemigrations的时候报1045 error 的问题
二、django 1045 error
Access denied for user ‘root‘@‘localhost‘ (using password: YES)
在一番搜索下,找到问题来源,权限问题
ERROR 1045: Access denied for user: ‘[email protected]‘ (Using password: YES)
前两天也偶尔出现这个错误,也没在意,因为我重新修改一下mysql的root密码后又可以用了,但昨天却不行,我把root密码修改以后虽然当时能用,一旦重新进入就都不能用了,可我的密码明明没有错啊?今天终于找到了原因,是权限问题,大家可以参考着下面两篇文章去看一下: http://topic.csdn.net/t/20060117/15/4521496.html# http://doc.99net.net/doc/database/1076488199/1076549732.html 由于以前从来没有遇到过这种情况,故把解决方法记录于此,以便今后自己查阅,具体方法就是你在改root密码的时候再加上一句给权限的语句:
grant all on mysql.* to ‘root‘@‘localhost‘ identified by ‘password‘;
最后那个password即是你要修改的root用户的密码
刚开始用mysql就给我来了个下马威,前些天完整完数据库后安装手册修改了一下root用户的密码,然后用root用户再登陆是一切OK。可是今天再登陆时就报1045错误代码。 错误代码 1045
Access denied for user ‘root‘@‘localhost‘ (using password:YES)
我的解决办法是重新设置root用户密码,在Windows平台下操作步骤如下:
1、以系统管理员身份登录到系统;
2、如果MySQL服务器正在运行,停止它。
如果是作为Windows服务运行的服务器,进入服务管理器:开始菜单->控制面板->管理工具->服务
如果服务器不是作为服务而运行的,可能需要使用任务管理器来强制停止它。
3、创建1个文本文件,并将下述命令置于单一行中:
SET PASSWORD FOR ‘root‘@‘localhost‘ = PASSWORD(‘MyNewPassword‘);
用任意名称保存该文件。在本例中,该文件为C:mysql-init.txt。
4、进入DOS命令提示:开始菜单->运行-> cmd
假定你已将MySQL安装到C:mysql。如果你将MySQL安装到了另一位置,请对下述命令进行相应的调整。
在DOS命令提示符下,执行命令:
C:mysqlin>mysqld-nt --init-file=C:mysql-init.txt
在服务器启动时,执行由“--init-file”选项(作用:在启动时从指定的文件中读取SQL命令)命名的文件的内容,更改根用户密码。当服务器成功启动后,应删除C:mysql-init.txt。
5、如果起动MySQL服务器出错,把进程mysqld-nt.exe关闭。然后重启它,OK。
6、或者停止MySQL服务器,然后在正常模式下重启它。如果以服务方式运行服务器,应从Windows服务窗口启动它。如果以手动方式启动了服务器,能够像正常情形下一样使用命令。
应能使用新密码进行连接。
三、re_path和path
目前 路由(url)到视图(View)的流程可以概括为四个步骤:
- url匹配
- 正则捕获
- 变量类型转化
- 视图调用
Django2.0 和之前相比多了 变量类型转化 这一步骤。
新的path语法可以解决一下以下几个场景:
- 类型自动转化
- 公用正则表达式
问题描述可参考 “问题引入” 一节。
四、mysql中文显示乱码
show variables like‘%char%‘;查询编码
关于GBK、GB2312、UTF8
UTF- 8:Unicode Transformation Format-8bit,允许含BOM,但通常不含BOM。是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24为(三个字节)来编码。UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强。UTF-8编码的文字可以在各国支持UTF8字符集的浏览器上显示。如,如果是UTF8编码,则在外国人的英文IE上也能显示中文,他们无需下载IE的中文语言支持包。
GBK是国家标准GB2312基础上扩容后兼容GB2312的标准。GBK的文字编码是用双字节来表示的,即不论中、英文字符均使用双字节来表示,为了区分中文,将其最高位都设定成1。GBK包含全部中文字符,是国家编码,通用性比UTF8差,不过UTF8占用的数据库比GBD大。
GBK、GB2312等与UTF8之间都必须通过Unicode编码才能相互转换:
GBK、GB2312--Unicode--UTF8
UTF8--Unicode--GBK、GB2312
对于一个网站、论坛来说,如果英文字符较多,则建议使用UTF-8节省空间。不过现在很多论坛的插件一般只支持GBK。
GB2312是GBK的子集,GBK是GB18030的子集
GBK是包括中日韩字符的大字符集合
如果是中文的网站 推荐GB2312 GBK有时还是有点问题
为了避免所有乱码问题,应该采用UTF-8,将来要支持国际化也非常方便
UTF-8可以看作是大字符集,它包含了大部分文字的编码。
使用UTF-8的一个好处是其他地区的用户(如香港台湾)无需安装简体中文支持就能正常观看你的文字而不会出现乱码。
gb2312是简体中文的码
gbk支持简体中文及繁体中文
big5支持繁体中文
utf-8支持几乎所有字符
首先分析乱码的情况
MySQL中涉及的几个字符集
character-set-server/default-character-set:服务器字符集,默认情况下所采用的。
character-set-database:数据库字符集。
character-set-table:数据库表字符集。
优先级依次增加。所以一般情况下只需要设置character-set-server,而在创建数据库和表时不特别指定字符集,这样统一采用character-set-server字符集。
character-set-client:客户端的字符集。客户端默认字符集。当客户端向服务器发送请求时,请求以该字符集进行编码。
character-set-results:结果字符集。服务器向客户端返回结果或者信息时,结果以该字符集进行编码。
在客户端,如果没有定义character-set-results,则采用character-set-client字符集作为默认的字符集。所以只需要设置character-set-client字符集。
要处理中文,则可以将character-set-server和character-set-client均设置为GB2312,如果要同时处理多国语言,则设置为UTF8。
关于MySQL的中文问题
解决乱码的方法是,在执行SQL语句之前,将MySQL以下三个系统参数设置为与服务器字符集character-set-server相同的字符集。
character_set_client:客户端的字符集。
character_set_results:结果字符集。
character_set_connection:连接字符集。
设置这三个系统参数通过向MySQL发送语句:set names gb2312
五、No changes detected
删除缓存后还需setting改一下INSTALLED_APPS
参考链接https://www.jb51.net/article/140960.html
六、chcp 65001
在mysql数据库中文显示乱码的情况下以为cmd的默认gbk字符导致了此问题,故采用了chcp 65001的方式换成utf-8的cmd去读取数据,仍然显示error,此方法不推荐使用
以上是关于django所遇到问题简单总结的主要内容,如果未能解决你的问题,请参考以下文章
Django 使用mysql 所遇到问题一:Error loading MySQLdb module
TypeError: connect() 参数 4 必须是 str,而不是 WindowsPath。 /*我在简单登录 django 项目中遇到的错误*/