怎么修改表以及字段的编码

wsyxr123 2013-12-15 10:10:52
有表A,创建时的编码为utf8,现在改成gbk,执行ALTER TABLE A DEFAULT CHARACTER SET gbk;
然后查看表的编码: SHOW CREATE TABLE A;
CREATE TABLE `A` (
`username` char(10) CHARACTER SET utf8 DEFAULT NOT NULL,
`password` varchar(32) CHARACTER SET utf8 NOT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=gbk;
请问如何修改表编码的同时将字段的编码也一并修改
...全文
761 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
pl在之心 2016-05-17
  • 打赏
  • 举报
回复
alter table album default character set utf8;
rucypli 2013-12-15
  • 打赏
  • 举报
回复
建表 导入数据
iihero_ 2013-12-15
  • 打赏
  • 举报
回复
终于帮你找到了一个办法: 每个表也是一条语句搞定: alter table `A` convert to character set gbk; see:
mysql> CREATE TABLE `A` (`username` char(10) CHARACTER SET utf8 NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.14 sec)

mysql> alter table `A` convert to character set gbk;
Query OK, 0 rows affected (0.16 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> show create table `A`;
+-------+---------------------------------------------------------------------------------------+
| Table | Create Table                                                                          |
+-------+---------------------------------------------------------------------------------------+
| A     | CREATE TABLE `a` (
  `username` char(10) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=gbk |
+-------+---------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
wsyxr123 2013-12-15
  • 打赏
  • 举报
回复
引用 8 楼 iihero 的回复:
[quote=引用 7 楼 u013161328 的回复:] 有没有比较好用的客户端图形化工具可以同时修改表以及字段编码的?
你前边那个原始的建表脚本确实挺怪的,为何要同时指定字段的字符集.正是因为那个导致不必要的麻烦. 目前还没有发现这样的GUI工具直接批量修改[/quote]
引用 8 楼 iihero 的回复:
[quote=引用 7 楼 u013161328 的回复:] 有没有比较好用的客户端图形化工具可以同时修改表以及字段编码的?
你前边那个原始的建表脚本确实挺怪的,为何要同时指定字段的字符集.正是因为那个导致不必要的麻烦. 目前还没有发现这样的GUI工具直接批量修改[/quote] 我建表时没有指定表的编码,更没有去指定字段的编码(一般根本没这个必要!),都是按钮mysql配置文件中默认的字符编码来创建的,那个字段的编码是在我修改了表的编码后才显示的
iihero_ 2013-12-15
  • 打赏
  • 举报
回复
直接用一个ultraedit, 也就是几分钟的事
iihero_ 2013-12-15
  • 打赏
  • 举报
回复
引用 7 楼 u013161328 的回复:
有没有比较好用的客户端图形化工具可以同时修改表以及字段编码的?
你前边那个原始的建表脚本确实挺怪的,为何要同时指定字段的字符集.正是因为那个导致不必要的麻烦. 目前还没有发现这样的GUI工具直接批量修改
wsyxr123 2013-12-15
  • 打赏
  • 举报
回复
有没有比较好用的客户端图形化工具可以同时修改表以及字段编码的?
iihero_ 2013-12-15
  • 打赏
  • 举报
回复
没有。这种SQL语句并不算长。
wsyxr123 2013-12-15
  • 打赏
  • 举报
回复
引用 4 楼 iihero 的回复:
没那么麻烦,一句SQL搞定.这也是各DBMS有些不太相同的地方.
mysql> CREATE TABLE `A` (
    ->    `username` char(10) CHARACTER SET utf8 NOT NULL,
    ->    `password` varchar(32) CHARACTER SET utf8 NOT NULL
    ->  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.01 sec)

mysql>
mysql> ALTER TABLE `A` DEFAULT CHARACTER SET gbk ,
    ->     modify `username` char(10) CHARACTER SET gbk NOT NULL,
    ->     modify `password` varchar(32) CHARACTER SET gbk NOT NULL;
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> show create table `A`;
+-------+--------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table
                               |
+-------+--------------------------------------------------------------------------------------------------------------------------+
| A     | CREATE TABLE `a` (
  `username` char(10) NOT NULL,
  `password` varchar(32) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=gbk |
+-------+--------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql>
其实官方文档上也都有参考.看明白了就行.
这个方法确实可以,有没有简便些的,比如我有很多个这样的字段的话,这句sql代码会很长
iihero_ 2013-12-15
  • 打赏
  • 举报
回复
没那么麻烦,一句SQL搞定.这也是各DBMS有些不太相同的地方.
mysql> CREATE TABLE `A` (
    ->    `username` char(10) CHARACTER SET utf8 NOT NULL,
    ->    `password` varchar(32) CHARACTER SET utf8 NOT NULL
    ->  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.01 sec)

mysql>
mysql> ALTER TABLE `A` DEFAULT CHARACTER SET gbk ,
    ->     modify `username` char(10) CHARACTER SET gbk NOT NULL,
    ->     modify `password` varchar(32) CHARACTER SET gbk NOT NULL;
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> show create table `A`;
+-------+--------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table
                               |
+-------+--------------------------------------------------------------------------------------------------------------------------+
| A     | CREATE TABLE `a` (
  `username` char(10) NOT NULL,
  `password` varchar(32) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=gbk |
+-------+--------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql>
其实官方文档上也都有参考.看明白了就行.
wsyxr123 2013-12-15
  • 打赏
  • 举报
回复
有表A,创建时的编码为utf8,现在改成gbk,执行ALTER TABLE A DEFAULT CHARACTER SET gbk; 然后查看表的编码: SHOW CREATE TABLE A; CREATE TABLE `A` ( `username` char(10) CHARACTER SET utf8 DEFAULT NOT NULL, `password` varchar(32) CHARACTER SET utf8 NOT NULL, ) ENGINE=InnoDB DEFAULT CHARSET=gbk; 请问如何修改表编码的同时将字段的编码也一并修改 备注说明: 即上面红色部分的编码也为gbk!!
wsyxr123 2013-12-15
  • 打赏
  • 举报
回复
建表语句: SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for `a` -- ---------------------------- DROP TABLE IF EXISTS `a`; CREATE TABLE `a` ( `username` varchar(10) NOT NULL DEFAULT '', `password` varchar(32) DEFAULT NULL, PRIMARY KEY (`username`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of a -- ----------------------------

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧