故障重现:(之前安装所需的步骤在此不一一详述)
[root@localhost install]# python install.py
开始写入配置文件
开始安装Jumpserver …
开始更新jumpserver
Creating tables …
Traceback (most recent call last):
……..
出现如下错误:
django.db.utils.OperationalError: (1366, "Incorrect string value: '\\xE6\\x9C\\xBA\\xE6\\x88\\xBF' for column 'name' at row 1")
问题根源:网上查找同类问题,应该是mysql数据编码的问题,django连接的数据库编码字符集要求utf8,不然报错
解决方法:
打开mysql数据库的配置文件
[[email protected] ~]# cat /etc/my.cnf
[mysqld]
.......
#在mysqld模块下增加以下两个参数
character_set_server=utf8
init_connect='SET NAMES utf8'
[root@localhost ~]# /etc/init.d/mysqld restart
注意:新版MySQL(如:5.5)或MariaDB等,mysqld启动时可能会遇到“[ERROR] /usr/libexec/mysqld: unknown variable ‘default_character_set=utf8’”的错误;就应该在[mysqld]中用 character_set_server=utf8 替换掉 default_character_set=utf8
2.删除原来创建的jumpsrvice问题数据库
3.再打开mysql数据库创建django连接的数据库
[root@localhost ~]# mysql -uxxxx -pxxxxxx
mysql> show variables like'character%'; //运行这语句查看一下character_set_database参数是否utf8
mysql> set character_set_database=utf8; //如果不是utf8,运行此语句设置一下
+--------------------------+----------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/mysql/share/charsets/ |
+--------------------------+----------------------------------+
mysql> create database jumpservice; //之后就可以正常创建jumpservice数据库了
Query OK, 1 row affected (0.00 sec)
4.[[email protected] install]# python install.py //重新执行命令即可安装成功
另外一种情况,也许是用户名或者库授权有问题,建议删除jumpserver库,重新建立一个新的并授权。
> create database jumpserver;
> grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by 'asd9577';
望能够帮助各位解决问题,这只是个人遇到的情况,有不同意见欢迎补充讨论。。。