Mysql修改数据库的字符集

----修改数据库字符集的一个原则是:新的字符集包含的字库要>=原有的字符集字库,否则已经存在的数据可能会变为乱码。

如果数据库中暂时还没有数据,那么我们可以直接执行命令。假如此时数据库中有表,那么表的字符集是不会随着数据库的字符集更改而更改的。

alter database dbname character set charset_name

假如数据库中存在有数据,其实也可以执行这个命令,但是会遗留一个问题,也就是之前已经存在的数据的表的字符集,而只是对新加的表或者记录生效。

此时我们可以通过另外的方法来将字符集进行修改。

模拟环境,模拟将数据库A的字符集从latin1修改为gbk(下面语句中的参数具体含义请自行查找)

1.export目前A数据库中已经存在的表结构(目前A数据库中存在表a)

mysqldump -uroot -p --default-character-set=gbk -d A >table_create.sql

2.手动将table_create.sql中的表结构的字符集为gbk

具体是:

CREATE TABLE `a` (
  `id` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=gbk;

3.确认应用程序已经不再修改A数据库中所有表的数据,再export所有的数据

mysqldump -uroot -p --quick --no-create-info --extended-insert --default-character-set =latin1 A>A_data.sql

4.打开A_data.sql,将其中的SET NAMES latin1修改为SET NAMES gbk.

/*!40101 SET NAMES gbk */;

5.将以前的数据库删除掉

6.使用新的字符集来创建同名数据库

create database A default charset gbk;

7.使用table_create.sql来创建表

mysql -uroot -p A <table_create.sql

8.import数据,使用A_data.sql

mysql -uroot -p A <A_data.sql

至此,我们就已经完整的将A数据库的字符集从latin1修改为gbk

时间: 2024-10-30 09:01:57

Mysql修改数据库的字符集的相关文章

mysql修改数据库密码

mysql修改数据库密码:5.7版本数据库在安装时日志中会显示密码cat /var/log/mysqld.log | grep password 登录时提示修改密码:mysql> show databases;ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.简单密码不可以设置:mysql> alter user 'root'@'

MySQL批量修改数据库的字符集

#走过,试过的路 UPDATE information_schema.`SCHEMATA` SET DEFAULT_COLLATION_NAME='utf8_general_ci' WHERE DEFAULT_COLLATION_NAME<>'utf8_general_ci'; #————尝试使用update语句来修改,这是走不通的,报以下错误 没有权限. #错误代码: 1044#Access denied for user 'root'@'%' to database 'informatio

mysql修改数据库编码(数据库字符集)和表的字符编码的方法

Mysql数据库是一个开源的数据库,应用非常广泛.以下是修改mysql数据库的字符编码的操作过程和将表的字符编码转换成utf-8的方法,需要的朋友可以参考下. mysql将表的字符编码转换成utf-8: alter table tb_anniversary convert to character set utf8; 修改数据库mysql字符编码为UTF8: 步骤1:查看当前的字符编码方法: mysql> show variables like'character%'; +-----------

mysql创建数据库指定字符集

mysql 创建 数据库时指定编码很重要,很多开发者都使用了默认编码,但是我使用的经验来看,制定数据库的编码可以很大程度上避免倒入导出带来的乱码问题. 我们遵循的标准是,数据库,表,字段和页面或文本的编码要统一起来很多mysql数据库工具(除了phpmyadmin,我偶尔用,功能强速度慢)都不支持创建时指定数据库编码,当然可以改my.ini来解决这个问题,但是需要重新启动mysql,不过用下面的语句会更有效 GBK: create database test2 DEFAULT CHARACTER

mysql修改数据库名

#!/bin/bash #作者:fafu_li #邮箱:[email protected] & 348926676@qq.com #时间:2015.08.10 #mysql数据库改名,官方没有直接修改数据库名称的命令 #只有通过修改表名方式实现 source /etc/profile #加载系统环境变量 source ~/.bash_profile #加载用户环境变量 set -o nounset #引用未初始化变量时退出 mysqlconn="mysql -h localhost -u

mysql修改数据库字符集,编码

查看mysql数据库当前编码 mysql -uroot -pxxx use tigercity; show variables like 'character_set_database';或者 MariaDB [lottery]> show variables like 'character_set_database'; +------------------------+--------+ | Variable_name          | Value  | +---------------

mysql修改数据库编码字段编码

//创建数据库并指定编码 create database `test` default character set utf8mb4 collate utf8mb4_unicode_ci //浏览器打印出unicode编码字符 varff='\u660e\u5929\uff0c\u4f60\u597d \ue115' //修改表的字段 alter table `tablename` change `dd` `dd` varchar(45) character set utf8 collate ut

mysql修改数据库目录

环境: OS:Red Hat Linux As 5 DB:MySql 5.5 在linux下安装好mysql后,默认的数据文件路径存放在/var/lib/mysql目录下,下面的步骤说明如将该目录下的数据文件迁移到其他目录. 1.创建数据库目录并将该目录权限属主修改为mysql[[email protected] /]# mkdir -p mysql/data[[email protected] /]# chown -R mysql:mysql ./mysql 2.停止mysql服务[[emai

Linux 下mysql修改数据库存放目录方法和可能遇到的问题

MySQL版本:5.6.23-enterprise-commercial-advanced ,使用rpm安装linux:Red Hat Enterprise Linux Server release 6.3 (Santiago)一 .如果是linux下用rpm包安装的mysql,修改方法如下: MySQL默认的数据文件存储目录为/var/lib/mysql.假如要把目录移到/home/data下需要进行下面几步: 1.home目录下建立data目录 cd /home mkdir data 2.把