MySQL表排序规则不同报错问题分析


当前第2页 返回上一页

如果使用下面这种方式修改字符集,你会发现,只更改了表级的,没有更改列级的。


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

mysql> ALTER TABLE cs CHARACTER SET utf8 collate utf8_unicode_ci;     

Query OK, 0 rows affected (0.01 sec)

Records: 0 Duplicates: 0 Warnings: 0

  

mysql> select TABLE_SCHEMA,TABLE_NAME,TABLE_COLLATION from information_schema.tables where table_name='cs';     

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

| TABLE_SCHEMA | TABLE_NAME | TABLE_COLLATION |

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

| test     | cs     | utf8_unicode_ci |

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

1 row in set (0.00 sec)

  

mysql> select TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME,COLLATION_NAME from information_schema.COLUMNS where TABLE_NAME='cs';

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

| TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | COLLATION_NAME |

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

| test     | cs     | id     | NULL      |

| test     | cs     | name    | utf8_general_ci |

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

2 rows in set (0.00 sec)

所以真正改字符集的时候别忘了加上CONVERT TO,如下:


1

2

3

4

5

6

7

8

9

10

11

12

mysql> ALTER TABLE cs CONVERT TO CHARACTER SET utf8 collate utf8_unicode_ci;

Query OK, 5 rows affected (0.06 sec)

Records: 5 Duplicates: 0 Warnings: 0

  

mysql> select TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME,COLLATION_NAME from information_schema.COLUMNS where TABLE_NAME='cs';

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

| TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | COLLATION_NAME |

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

| test     | cs     | id     | NULL      |

| test     | cs     | name    | utf8_unicode_ci |

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

2 rows in set (0.00 sec)

要仅仅改变一个表的默认字符集,应使用此语句:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

mysql> ALTER TABLE cs default CHARACTER SET utf8 collate utf8_general_ci,ALGORITHM=INPLACE,LOCK=NONE;        

Query OK, 0 rows affected (0.00 sec)

Records: 0 Duplicates: 0 Warnings: 0

  

mysql> select TABLE_SCHEMA,TABLE_NAME,TABLE_COLLATION from information_schema.tables where table_name='cs';     

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

| TABLE_SCHEMA | TABLE_NAME | TABLE_COLLATION |

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

| test     | cs     | utf8_general_ci |

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

1 row in set (0.00 sec)

  

mysql> select TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME,COLLATION_NAME from information_schema.COLUMNS where TABLE_NAME='cs'

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

| TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | COLLATION_NAME |

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

| test     | cs     | id     | NULL      |

| test     | cs     | name    | utf8_unicode_ci |

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

2 rows in set (0.00 sec)

可以发现列字符集没有改变,并且只有新的列才会默认继承表的字符集(utf8.utf8_general_ci)。

相关推荐:

MySQL表的四种分区类型的代码详解

如何使用mysql表连接

php mysql表中文乱码问题如何解决

以上就是MySQL表排序规则不同报错问题分析的详细内容,更多文章请关注木庄网络博客

返回前面的内容

相关阅读 >>

如何利用mysql数据库命令创建和查看分区情况

关于mysql 时间戳格式化函数from_unixtime的使用说明

docker安装mysql的简单实例

mysql中的范式详解

mysql中关于表数据文件损坏导致数据库无法启动的问题解决

mysql主从复制原理详解

hive和mysql的区别是什么

mysql事务之acid特性(详解)

hadoop跟mysql的区别是什么?

mysql查询结果顺序按in()中id的顺序排列的实例分析

更多相关阅读请进入《mysql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...