(1)jdbc:mysql://localhost:3306/world?useUnicode=true&characterEncoding=utf8
* 对实体 "characterEncoding" 的引用必须以 ';' 分隔符结尾,但;在xml中必须用&转义
(2)数据库字符设定为UTF-8
(3)页面字符设定为UTF-8
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
(4) 前后交互(过滤)字符设定为UTF-8,注意get、post等方式访问实现utf-8 方式不同
characterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
forceEncoding
true
characterEncodingFilter
/*
(5)开发工具中当前项目设定为UTF-8
linux下获取初始密码: grep 'temporary password' /var/log/mysqld.log
方法总结
无法从数据库获取相应字段:传入参数属性和数据库字段名不同;数据库没有对应字段
union要求,连接双方,返回字段个数一致,名称一致,顺序一致
navicat不支持mysql5.7以上的加密规则,用下面命令改变规则
mysql -uroot -ppassword #登录
use mysql; #选择数据库
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #更改加密方式
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; #更新用户密码
FLUSH PRIVILEGES; #刷新权限
#操作mysql表
mysql> use mysql
Database changed
#允许来自所有host的连接
mysql> update user set host='%' where user='root';
#出现下列错误忽略
ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY'
#更新权限
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
#查看id
show variables like 'server_id';
#修改
set global server_id=2;
#版本5.7以前修改密码
SET PASSWORD = PASSWORD('Xiaoming250');
#版本5.7以后修改密码
ALTER USER USER() IDENTIFIED BY 'Xiaoming250';
#抓取错误信息
cat /var/log/mysqld.log
ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #修改加密规则
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; #更新一下用户的密码
FLUSH PRIVILEGES; #刷新权限
#第一步检查端口是否启动
#第二步查看地址是否开通
netstat -napt
#如果其中Local Address是127.0.0.1则只能本地访问
#修改config文件
vim /etc/mysql/mysql.conf.d/mysqld.cnf
#修改bind-address=0.0.0.0
MySql6.0以后,关于mysql配置有两点需要注意
第一步:让主键失效:alter table table_name disable primary key cascade;
第二步:删除数据:delete table_name;
第三步:让主键生效:alter table table_name enable primary key;
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` TIMESTAMP NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
原因是CST时区可能表示下列时间:
1.美国中部时间 Central Standard Time (USA) UTC-06:00
2.澳大利亚中部时间 Central Standard Time (Australia) UTC+09:30
3.中国标准时 China Standard Time UTC+08:00
4.古巴标准时 Cuba Standard Time UTC-04:00
解决方案:
JDBC连接参数指明时区:如serverTimezone=Asia/Shanghai
原因:数据库字段值为空,但是方法返回值为基础类型
原因:数据库死锁或等待超时
解决方案:
1、临时方案:
select * from information_schema.innodb_trx;
kill thread_id
2、终极方案:
分析sql,是否存在资源处理超时或者相互争抢的情况