mysql乱码解决

1、查询数据库编码

 show variables like "%char%";

mysql> show variables like "%char%";
+--------------------------+----------------------------------------------------------+
| Variable_name            | Value
+--------------------------+----------------------------------------------------------+
| character_set_client     | utf8
      |
| character_set_connection | utf8
      |
| character_set_database   | utf8
      |
| character_set_filesystem | binary
      |
| character_set_results    | utf8      --mysql客户端编码
      |
| character_set_server     | utf8
      |
| character_set_system     | utf8
      |
| character_sets_dir       | D:\Java\Databases\MySQL\MySQL Server 5.0\share\charsets\ |
+--------------------------+----------------------------------------------------------+

2、客户端乱码解决

因为操作系统是中文操作系统,默认使用的字符集是GB2312,所以需要修改一下:

set character_set_results=gb2312;注意作用是临时的
3、查看某个数据库编码

mysql> show create database base;
+----------+-------------------------------------------------------------------+

| Database | Create Database                                                   |

+----------+-------------------------------------------------------------------+

| base | CREATE DATABASE `base` /*!40100 DEFAULT CHARACTER SET utf8 */ |

+----------+-------------------------------------------------------------------+

 

4、查看表的数据库编码

mysql> show create table base_auth_group;
+-----------------+----------------------------------------------
-----------------------------------------------------------------
| Table           | Create Table

+-----------------+----------------------------------------------
-----------------------------------------------------------------
| base_auth_group | CREATE TABLE `base_auth_group` (
  `dbid` bigint(20) NOT NULL auto_increment COMMENT '物理主键',
  `id` char(36) NOT NULL COMMENT '业务主键',
  `name` varchar(32) NOT NULL COMMENT '分组名',
  `groupname` varchar(64) NOT NULL COMMENT '分组名称',
  `type` int(11) NOT NULL COMMENT '类型',
  `create_time` datetime default NULL COMMENT '创建时间',
  `modify_time` datetime default NULL COMMENT '修改时间',
  PRIMARY KEY  (`dbid`),
  UNIQUE KEY `id` (`id`),
  UNIQUE KEY `groupname` (`groupname`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户组表'            
+-----------------+------------------------------------------------
-------------------------------------------------------------------

 

5、程序调用编码乱码

错误:(Incorrect string value: '\xE8\xB6\x85\xE7\xBA\xA7...' for column 'name')

注意查看:信息输入路径:client→connection→server的编码;

使用:SET NAMES UTF8;

等价于:

  SET character_set_client = utf8;     

  SET character_set_results = utf8;    

  SET character_set_connection = utf8; 

若以上编码统一后还是乱码,就需要查看创建表的编码;

6、执行sql脚本时乱码

也是需要先进行SET NAMES UTF8;编码统一

use test; 进入数据库

source test.sql;执行sql

注意:

创建数据库时,最好指定编码:CREATE DATABASE base DEFAULT CHARACTER SET utf8;

只要数据库创建制定好编码,其内新创建的编码都会与当前数据库编码一致;

7、最常用两个命令

use databaseName;选择数据库

show tables;查看数据库中所有表

8、DATETIME,DATE和TIMESTAMP

 DATETIME类型是:年--日 时:分:秒
 DATE类型是:年--日
 TIMESTAMP是:可以默认为NULL,显示格式与DATETIME一样

 

虽然datetime与timestamp格式一样但是还是不同

datetime插入当前日期使用new();

timestamp插入当前日期使用 CURRENT_TIMESTAMP

若含有多个timestamp类型字段时,只能在第一个出先的字段使用“DEFAULT CURRENT_TIMESTAMP” ,只能用一次并且是第一个字段

9、创建表

drop table if exists base_auth_user_group;
create table base_auth_user_group(
  dbid bigint(20) not null auto_increment primary key comment '物理主键',
  user_id char(36) not null comment '用户表id',
  group_id char(36) not null comment '分组表id',
  constraint unique (user_id, group_id)
) comment '用户和组映射表';

 

10、创建视图

CREATE OR REPLACE  VIEW BASE_AUTH_PERM_USER AS
SELECT   
  DISTINCT USER_ID, PERMISSION_ID
FROM
  BASE_AUTH_USER_GROUP UG
        JOIN BASE_AUTH_PERM_GROUP PG ON UG.GROUP_ID = PG.GROUP_ID
;

 

转载于:https://www.cnblogs.com/atwanli/articles/4782552.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值