MySQL手册(http://dev.mysql.com/doc/refman/5.1/en/charset-syntax.html)说:
字符集和排序规则的默认设置分为四个级别:服务器,数据库,表和列.以下部分中的描述可能看起来很复杂,但实践中发现多级默认会导致自然而明显的结果.
我想查询一个特定的CHAR/VARCHAR/TEXT列,找出MySQL认为的编码方式.是否有捷径可寻?我知道我可以SHOW CREATE TABLE <table>用来查看表的默认字符集,但是我想在列级别上做同样的事情,因为文档表明它可能与表默认值不同.
Mic*_*ski 14
您可以在information_schema.COLUMNS表格中执行此操作.
SELECT
COLUMN_NAME,
TABLE_NAME,
CHARACTER_SET_NAME,
COLUMN_TYPE,
COLLATION_NAME
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'your_database_name'
Run Code Online (Sandbox Code Playgroud)
Gallery2数据库的示例输出:
+-------------------------+--------------------------+--------------------+--------------+-----------------+
| COLUMN_NAME | TABLE_NAME | CHARACTER_SET_NAME | COLUMN_TYPE | COLLATION_NAME |
+-------------------------+--------------------------+--------------------+--------------+-----------------+
| g_accessListId | g2_AccessMap | NULL | int(11) | NULL |
| g_userOrGroupId | g2_AccessMap | NULL | int(11) | NULL |
| g_permission | g2_AccessMap | NULL | int(11) | NULL |
| g_itemId | g2_AccessSubscriberMap | NULL | int(11) | NULL |
| g_accessListId | g2_AccessSubscriberMap | NULL | int(11) | NULL |
| g_id | g2_AlbumItem | NULL | int(11) | NULL |
| g_theme | g2_AlbumItem | utf8 | varchar(32) | utf8_general_ci |
| g_orderBy | g2_AlbumItem | utf8 | varchar(128) | utf8_general_ci |
| g_orderDirection | g2_AlbumItem | utf8 | varchar(32) | utf8_general_ci |
Run Code Online (Sandbox Code Playgroud)