python

【database】Mysql相关问题解决

文章暂存

systemime
2020-03-29
3 min

摘要.

# mysql错误提示: django.db.utils.InternalError: (1366, "Incorrect string value"...)解决方案

问题:
在Django项目中使用 migrate 同步数据库操作时,出现1366类型 InternalError

出错原因:
由于表记录中有汉字,而创建库或者创建表的时候没有设置中文字符集charset=utf8

解决方案:
方案一、更改库的默认字符集

创建库的时候指定默认字符集:

create database 库名 default charset=utf8;

或者修改现有库的字符集:

alter database 库名 character set utf8;

方案二、更改表的默认字符集,

创建表的时候指定默认字符集

create table 表名 (...) default charset=utf8;

或者修改现有表的字符集

alter table 表名 character set utf8;

方案三、修改配置文件(新创建的库和表会自动设置中文字符集)

修改配置文件详细步骤: (注意:为了防止把配置文件改错,修改之前先将其备份)

# 获取用户权限:
sudo -i
# 进入到mysql配置文件所在路径:
cd /etc/mysql/mysql.conf.d/

# 备份(-p选项会把原文件的权限也一起复制)
cp -p mysql.cnf mysql.cnf.bak #用vi打开配置文件mysqld.cnf并进行修改:

输入vi mysqld.cnf
找到 [mysqld],在 tmpdir =/tmp 后面按o键换行插入 character_set_server=utf8(如图所示):

按esc键 退出插入模式,按shift + : 进入命令行,输入wq保存并退出
输入 /etc/init.d/mysql restart 重启mysql服务
输入exit 退出超级用户模式
这样,配置文件就修改成功了

最后,提一下有可能导致修改失败的两个问题

1.如果在修改配置文件的过程中改错了配置,可以进入配置文件所在路径,删除已经保存修改的原配置文件 mysqld.cnf,输入mv mysqld.cnf.bak mysqld.cnf ,把备份的配置文件重命名为配置文件就可以还原,然后再执行上述步骤进行正确的修改即可。

2.如果因为权限问题没有修改成功,则可以输入chmod更改文件权限再进行修改。

# 解决MySQL8.0安装第一次登陆修改密码时出现的问题

mysql数据库初始化后初次登录需要修改密码

初次登录会碰到下面这个错误

ql> alter user root identified by ‘password';
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

需要使用下面的命令来修改密码

mysql> alter user user() identified by ‘password';
Query OK, 0 rows affected (1.43 sec)

上次编辑于: 5/20/2021, 7:26:49 AM