现在我有个数据库.
create database aa ; 字符集为GBK.....那么,当我没有指定表的字符集时,会跟database一样.但是,我现在想把全部新建表的字符集全部变成utf8.我也不想在每个表的后面加一个 DEFAULT CHARSET=utf8来控制,太麻烦.我想用一个全局的变量来控制所有的。例如 像SET session storage_engine=InnoDB; 一样。。改一下后面的存储引擎,所有新建表的存储引擎都会变.且 我不知道数据库名(所以不能改数据库的字符集 这个方法pass) 
请各位高手指教

解决方案 »

  1.   

    mysql> show create database foo;
    +----------+-------------------------------------------------------------+
    | Database | Create Database                                             |
    +----------+-------------------------------------------------------------+
    | foo      | CREATE DATABASE `foo` /*!40100 DEFAULT CHARACTER SET gbk */ |
    +----------+-------------------------------------------------------------+
    1 row in set (0.00 sec)
    alter database foo default charset=utf8;mysql> use foo;
    Database changed
    mysql> create table t(id int);
    Query OK, 0 rows affected (0.08 sec)mysql> show create table t;
    +-------+-------------------------------------------------------------------------------------+
    | Table | Create Table                                                                        |
    +-------+-------------------------------------------------------------------------------------+
    | t     | CREATE TABLE `t` (
      `id` int(11) default NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
    +-------+-------------------------------------------------------------------------------------+
    1 row in set (0.02 sec)
      

  2.   


    iihero 大哥 貌似没有看清楚我的题目 红色字体部分
      

  3.   

    这是可以查出来的啊为何不知道呢?mysql> select user(), database();
    +----------------+------------+
    | user()         | database() |
    +----------------+------------+
    | root@localhost | test       |
    +----------------+------------+
    1 row in set (0.00 sec)如果你一定要钻这个牛角尖的话,那我只能说,没解。
      

  4.   


    iihero 你误解了。我没那意思。。是这样的。我要写个XX脚本,里面有几个create table 语句且在不同的数据库名下运行而运行的那个人并不会修改数据库名。。所以。我就想不用数据库名的方法来解决这问题。 
      

  5.   


    如果数据库已经建好,并且字符集已经指定的话,想让创建的表字符集如你所愿,似乎没有统一的参数可以指定。
    我的方法:
    1. alter database abc default charset='***' (用户不知,可放弃)
    2. 在你的SQL脚本中,每张表,都加一句:
       alter table <table_name> default charset='***'
       这个可以统一做,
      最后,你应该可以得到完全一样的表级的字符集了。