Ale*_*ber 7 mysql utf-8 encoding mysql-5.6
我正在使用 5.6.28 MySQL 社区服务器在 CentOS 6.7 Linux 服务器上以德语托管 WordPress + ProPhoto 博客:
mysql> show tables;
+-----------------------+
| Tables_in_blog |
+-----------------------+
| wp_commentmeta |
| wp_comments |
| wp_links |
| wp_options |
| wp_postmeta |
| wp_posts |
| wp_term_relationships |
| wp_term_taxonomy |
| wp_terms |
| wp_usermeta |
| wp_users |
+-----------------------+
11 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
然后最近我开始开发俄语应用程序,不得不在/etc/my.cnf中将MySQL 设置更改为utf8mb4编码:
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
character-set-client-handshake=FALSE
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
Run Code Online (Sandbox Code Playgroud)
现在我的第一个数据库有一个小问题,它仍然显示为latin1:
mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | latin1 | HOW TO CONVERT?
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
请问将latin1数据库转换为utf8mb4的最佳方法是什么?
以及如何确保德语变音字符 ( ä ö ü
) 在此过程中正确转换?
Ric*_*mes 13
这里有两个可能的问题,他们有两个不同的答案——
我如何制作所有新表 utf8mb4
可以在创建数据库时完成(对于一个数据库):
CREATE DATABASE dbname
DEFAULT CHARACTER SET utf8mb4
DEFAULT COLLATE utf8mb4_unicode_ci;
Run Code Online (Sandbox Code Playgroud)
您可以ALTER
数据库(类似的语法),但只提供了一个默认的未来表。
存在与从“服务器”变量继承相关的错误: http://dev.mysql.com/worklog/task/?id=3811,所以我建议您简单地对每个数据库进行明确。
如何转换现有的 latin1 表
如果您有一个声明为latin1
并且正确包含 latin1 字节的表,并且您想将所有字符/文本列更改为 utf8 ...
ALTER TABLE tbl CONVERT TO CHARACTER SET utf8mb4;
Run Code Online (Sandbox Code Playgroud)
这会更改定义并主动更改列中的必要字节。
ALTER TABLE tbl MODIFY col1 ... CHARACTER SET utf8mb4;
Run Code Online (Sandbox Code Playgroud)
与上述类似,但一次只能处理一列,并且需要在 MODIFY 子句中添加正确的内容。因此,这将是相当乏味的。但是,如果您只想更改某些列,它会很有用。
归档时间: |
|
查看次数: |
13513 次 |
最近记录: |