新版博客SEO优化基本完成,新老博客内容正在整合中,保证每篇文章高质量。 SiteMap RSS Github
Mysql 问题记录
嘉美伯爵   2019年7月16日 19:13   数据库   MySQL   283  

Got error 168 from storage engine

1. 修改mysql配置文件.
vi /etc/mysql/my.cnf  # 若yum安装 vi /etc/my.cnf
#现在配置默认创建都为innodb
default-storage-engine=innodb   
#默认是没有这个参数,没有的话,他的默认值是0,这个参数的值如果大于0,innodb会被禁止使用insert、update、delete命令
innodb_force_recovery=0        
#这个值要大于你导入的文件大小  
max_allowed_packet=1024M 
2.重启mysql服务
systemctl  restart mysql

Incorrect string value: '...'for column 'change_message' at row 1

在创建数据库时可使用如下命令:
GBK:CREATE DATABASE tinyCMS DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
UTF8: CREATE DATABASE tinyCMS DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
已创建时(但对已存在的表不影响):
ALTER DATABASE tinyCMS CHARACTER SET utf8 COLLATE utf8_general_ci;

MySQL: django.db.utils.OperationalError: (1698, “Access denied for user 'root'@'localhost'”)

create user 'django'@'localhost' identified by 'django-user-password';
grant usage on *.* to 'django'@'localhost';
grant all privileges on django-database-1.* to 'django'@'localhost';

RuntimeError: cryptography is required for sha256_password or caching_sha2_p

1.执行命令
    1). ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #修改加密规则 
    2).ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; #更新一下用户的密码 
    3).FLUSH PRIVILEGES; #刷新权限
    4).再重置下密码:alter user 'root'@'localhost' identified by '123456';
2.重启服务。
3.完成

存储特殊字符

Emoji表情或者某些特殊字符是4个字节,而Mysql的utf8编码最多3个字节

ALTER TABLE 表名 MODIFY COLUMN 表字段 表属性 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL;  

1130-host ... is not allowed to connect to this MySql server,MySQL

1. 设置bind-ip
    vim /etc/my.cnf
    在 [mysqld]:
        下面加一行
        bind-address = 0.0.0.0

2. 设置外部ip可以访问
    进入mysql运行下面命令:
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
    FLUSH PRIVILEGES

3. 若防火墙开启,应把3306端口放行

Mysql 安装

1、下载MySQL
2、mysqld --initialize --console
3、net start mysql
4、mysql -u root -p
5、ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
6、添加path

表复制

# 完全复制
insert into work2.main_form select * from work1.main_form;
# 不复制重复纪录
insert into db1.table1 select distinct * from db2.table2;

1264 Out of range value for column

# 错误原因,定义的列位数不够,新版本的MySQL对字段的严格检查。 通常在Linux下安装完mysql后,默认的sql_mode值是空,在这种情形下mysql执行的是一种不严格的检查,如果要插入的字段长度超过列定义的长度,那么mysql不会终止操作,而是会自动截断后面的字符继续插入操作,而在windows下面却不会这样。

修改my.ini,将sqlmode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTIO"
改为
sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

(1062, "Duplicate entry '' for key 'pay_sn'")

  • 主键已存在,不能插入,数据表中该字段存在相同的,列如订单号虽然不是主键,但要求unique

参考文档

Windows下安装mysql-8.0.12及修改初始密码

mysql对emoji特殊字符进行存储

ERROR 1030 (HY000) at line 33: Got error 168 from storage engine

1698, “Access denied for user 'root'@'localhost'”

cryptography is required for sha256_password or caching_sha2_p