首页 > 数据库 >MySQL配置中文编码GBK的重要性

MySQL配置中文编码GBK的重要性

时间:2023-09-09 15:31:34浏览次数:48  
标签:编码 DEFAULT MySQL GBK gbk mysql table

一、背景

      在mysql数据库中,默认使用的是latin字符集,所以无法正常的支持中文字符。在my.ini文件中将配置支持GBK编码,方便于后续数据库操作而不会报错误。

二、问题如下图所示

MySQL配置中文编码GBK的重要性_my.ini

MySQL配置中文编码GBK的重要性_MySQL_02

MySQL配置中文编码GBK的重要性_my.ini_03

MySQL配置中文编码GBK的重要性_GBK编码_04

通过上述图,存在以下几个问题:

  1. 默认创建的数据库和表是latin1编码。
  2. my.ini配置文件中设置为: character-set_server=utf-8,将创创建数据和表默认为utf-8编码,不支持中文。
  3. 将现有utf-8编码转变为GBK编码,才可以支持中文的读与写。
  4. 最好的方式是配置my.ini支持GBK编码。

 三、解决问题

第一,创建table的时候就使用GBK编码;

create table students (
id   INT(11) UNSIGNED, 
name VARCHAR(32),
age INT(4)  unsigned,
sex  VARCHAR(16)   
) character set = GBK;

 第二,修改已经有的table的编码

当使用默认编码创建了一个table的时候,是不能支持中文的,这时候使用如下语句对table_name进行修改:

mysql>alter table students convert  to  character set  GBK

 此后再往这个table插入中文的时候,就可以正常存储和读取了,

第三,修改mysql的my.ini配置文件,让mysql默认编码为GBK

character-set-server=GBK
Show create database student; #查数据库编码
mysql> show create database student;
+----------+-----------------------------------------------------------------+
| Database | Create Database                                                 |
+----------+-----------------------------------------------------------------+
| student  | CREATE DATABASE `student` /*!40100 DEFAULT CHARACTER SET gbk */ |
+----------+-----------------------------------------------------------------+
show create table student; #查看一个table的编码,假如table名为students:
mysql> show create table students;
| students | CREATE TABLE `students` (
  `id` int(11) unsigned DEFAULT NULL,
  `name` varchar(32) DEFAULT NULL,
  `age` int(4) unsigned DEFAULT NULL,
  `sex` varchar(16) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=gbk |

 四、my.ini配置文件 

[mysqld]
port=3306
basedir=D:\mysql-5.7.18-winx64
datadir=D:\mysql-5.7.18-winx64\Data
sql-mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
character-set_server=gbk
mysql> status
--------------
mysql  Ver 14.14 Distrib 5.7.18, for Win64 (x86_64)
Connection id:          3
Current database:       student
Current user:           root@localhost
SSL:                    Not in use
Using delimiter:        ;
Server version:         5.7.18 MySQL Community Server (GPL)
Protocol version:       10
Connection:             localhost via TCP/IP
Server characterset:    gbk
Db     characterset:    gbk
Client characterset:    gbk
Conn.  characterset:    gbk
TCP port:               3306
Uptime:                 1 min 56 sec
Threads: 1  Questions: 17  Slow queries: 0  Opens: 105  Flush tables: 1  Open tables: 98  Queries
per second avg: 0.146


标签:编码,DEFAULT,MySQL,GBK,gbk,mysql,table
From: https://blog.51cto.com/sky9896/7419819

相关文章

  • MySQL查询命令练习(二)
    详细的命令总结及用法点这里就好了^_^      ⬇⬇⬇《MySQL命令总结》看完命令用法看看下面的题吧根据题目要求,写出SQL语句namecoursescore张三语文85张三数学82李四语文85李四数学81李四英语88王五语文75王五数学85王五化学99创建表并验证CREATETABLEstudent(name......
  • MySQL 8使用部分撤销做权限限制
     在MySQL8.0.16之前,不可能授予全局权限的同时,排除某些schema;从MySQL8.0.16开始,如果启用了partial_revokes系统变量,就可以做到这一点。具体来说,对于拥有全局权限的用户,partial_revokes可以撤销特定schema的权限,同时保留其他schema的权限。这样施加的权限限制可能有助于......
  • 迁移:mysql迁移dm8问题处理
    问题1表[xxxxx]中不能同时包含聚集KEY和大字段处理方法sp_set_para_value(1,'PK_WITH_CLUSTER',0);将迁移工具退回输入DM用户名密码的页面再继续下一步,或者关闭当前迁移窗口重新打开迁移任务(PK_WITH_CLUSTER是会话级参数,直接重试会因为本会话的参数未生效而依然报错)问题2第......
  • mysql时间段内查询
    mysql时间段内查询(第一种方法)SELECT*FROM 表名WHERE字段名>NOW()-INTERVAL2HOUR;(第二种方法)SELECT*FROM 表名WHERE 字段名>DATE_SUB(NOW(),INTERVAL60MINUTE);今天select*from表名whereto_days(时间字段名)=to_days(now());昨天SELECT* FROM 表名 ......
  • Mysql - WHERE子句
    今天想了解一下flowable是怎么样查询代办的,于是打断点结果发现有一个SQL语句有点意思SELECTDISTINCT RES.*FROM ACT_RU_TASKRESWHERE RES.ASSIGNEE_ISNULL ANDEXISTS( SELECT LINK.ID_ FROM ACT_RU_IDENTITYLINKLINK WHERE LINK.TYPE_='candidate'......
  • 处理MySQL高水位表的相关测试
    文档课题:处理MySQL高水位表的相关测试.数据库:MySQL5.7.21系统:rhel7.31、理论知识MySQL中使用delete删除数据后并不会回收存储空间,而是等待新数据填补该空洞,若无数据填补,则此部分存储空间会造成资源浪费。此时需使用optimizetable释放空间。对于写操作频繁的表,需根据实际情况......
  • 15.mysql数据库安全性
    MySQL数据库的安全性是一个复杂而广泛的主题,它涉及多个方面,包括访问控制、数据保护、身份验证、审计和防止常见的数据库攻击等。以下是一些常见的MySQL数据库安全性最佳实践和示例代码,以帮助您加强MySQL数据库的安全性。请注意,这只是一个起点,实际的安全措施可能因应用程序和......
  • mysql 开启cdc归档日志
    1、介绍mysql开启归档只需要在mysql的 my.ini 中添加几个配置即可(适用版本如下:)2、说明如下:#配置二进制日志,下面的路径logs文件夹需要提前建好log-bin=E:/mariadb-10.4.20-winx64/logs/mysql-bin.log#设置最大存储空间max-binlog-size=50000M#指定服务idser......
  • mysql实现商品分类功能
    目录概述1.0表的创建2.0主分类2.1数据添加与查询3.0子分类3.1数据添加3.2数据查询概述#1.0系统环境:windows10#2.0mysql版本:mysql8.0.2#3.0可视化软件:jetbrainsdatagrip20221.0表的创建#产品(商品)分类功能#分类表createtablecategory(idint2aut......
  • MYSQL如何搭建主从复制
    MYSQL如何搭建主从复制首先要了解为什么要用主从复制,主从复制有什么好处。首先呢,你要实现读写分离就必须要在实现主从复制的前提下,读写分离就是主服务器的数据库(master)修改、删除、增加数据,而从服务器(slave)实现读操作。MySQL读写分离是一种数据库架构设计策略,旨在分离处理数......