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主从同步、读写分离配置步骤

mysql实现行列转换

详解mysql中url时区的陷阱该如何规避

mysql数据库update语句使用详解

mysql 幻读怎么解决?

推荐给新手的mysql学习规划

mysql中的update语句怎么使用

图文详解mysql中如何查看sql语句的执行时间

mysql怎么查看表的字符集

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


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

数据库系统概念 第6版

机械工业出版社

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



打赏

取消

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

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

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

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

评论

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