0%

MySQL问题与解决方法

使用 MySQL 过程中遇到的问题与解决方法。


中文乱码

MySQL-中文乱码

关于乱码问题无非就是编码方式不一致导致的。首先通过jdbc连接数据库后插入数据时,你应该保证以下三处的编码方式相同(推荐utf-8编码方式):
1:eclipse文件保存的编码方式
2:数据库的编码方式
3:jdbc连接的编码方式
前两点是一般都能想到的,但是第三点忽略则很容易导致数据中文乱码情况,第三点的解决方案就是在数据库连接中指定编码方式:

VipMao

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<c3p0-config>
<!-- 使用默认的配置读取连接池对象 -->
<default-config>
<!-- 连接参数 -->
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://192.168.153.100:3306/dailylog?characterEncoding=utf-8</property>
<property name="user">username</property>
<property name="password">password</property>

<!-- 连接池参数 -->
<property name="initialPoolSize">5</property>
<property name="maxPoolSize">10</property>
<property name="checkoutTimeout">2000</property>
<property name="maxIdleTime">1000</property>
</default-config>
</c3p0-config>

再运行程序,发现就能够正常显示中文了:

MySQL-中文乱码-解决

密码强度验证

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
mysql> select @@validate_password_policy;
+----------------------------+
| @@validate_password_policy |
+----------------------------+
| MEDIUM |
+----------------------------+

mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password_check_user_name | OFF |
| validate_password_dictionary_file | |
| validate_password_length | 8 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | MEDIUM |
| validate_password_special_char_count | 1 |
+--------------------------------------+--------+

说明:
validate_password_dictionary_file:插件用于验证密码强度的字典文件路径。

validate_password_length:密码最小长度,参数默认为8,它有最小值的限制,最小值为:validate_password_number_count + validate_password_special_char_count + (2 * validate_password_mixed_case_count)。

validate_password_mixed_case_count:密码至少要包含的小写字母个数和大写字母个数。

validate_password_number_count:密码至少要包含的数字个数。

validate_password_policy:密码强度检查等级,0/LOW、1/MEDIUM、2/STRONG。有以下取值:

Policy Tests Performed
0 or LOW Length
1 or MEDIUM Length; numeric, lowercase/uppercase, and special characters
2 or STRONG Length; numeric, lowercase/uppercase, and special characters; dictionary file
默认是1,即MEDIUM,所以刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。

validate_password_special_char_count
密码至少要包含的特殊字符数。

加号

MySQL 中的 + 只有一个作用——运算符:

  • 两个操作数都为数值型,做加法运算。
  • 只要一方为字符型,尝试将字符型转换成数值型:
  • 如果转换成功,继续做加法运算;
  • 如果转换失败,则将字符型转换成 0
1
2
3
4
select 100+90; --190
select '23'+100; --123
select 'sannaha'+23; --23
select null + 10; --null