杯具。。继续字符集·~~~

沉沦 2010-06-28 01:47:03


现在我有个数据库.
create database aa ; 字符集为GBK.....

那么,当我没有指定表的字符集时,会跟database一样.

但是,我现在想把全部新建表的字符集全部变成utf8.

我也不想在每个表的后面加一个 DEFAULT CHARSET=utf8来控制,太麻烦.

我想用一个全局的变量来控制所有的。

例如 像SET session storage_engine=InnoDB; 一样。。

改一下后面的存储引擎,所有新建表的存储引擎都会变.

我不知道数据库名(所以不能改数据库的字符集 这个方法pass)


请各位高手指教。。。
...全文
45 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
iihero_ 2010-06-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 m582445672 的回复:]

是这样的。我要写个XX脚本,里面有几个create table 语句。。。

且在不同的数据库名下运行。。。而运行的那个人并不会修改数据库名。。

所以。我就想不用数据库名的方法来解决这问题。
[/Quote]

如果数据库已经建好,并且字符集已经指定的话,想让创建的表字符集如你所愿,似乎没有统一的参数可以指定。
我的方法:
1. alter database abc default charset='***' (用户不知,可放弃)
2. 在你的SQL脚本中,每张表,都加一句:
alter table <table_name> default charset='***'
这个可以统一做,
  最后,你应该可以得到完全一样的表级的字符集了。 
沉沦 2010-06-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 iihero 的回复:]
这是可以查出来的啊。。。为何不知道呢?

mysql> select user(), database();
+----------------+------------+
| user() | database() |
+----------------+------------+
| root@localhost | test |
+----------------+------……

如果你一定要钻这个牛角尖的话,那我只能说,没解。
[/Quote]

iihero 你误解了。我没那意思。。

是这样的。我要写个XX脚本,里面有几个create table 语句。。。

且在不同的数据库名下运行。。。而运行的那个人并不会修改数据库名。。

所以。我就想不用数据库名的方法来解决这问题。



iihero_ 2010-06-28
  • 打赏
  • 举报
回复
这是可以查出来的啊。。。为何不知道呢?

mysql> select user(), database();
+----------------+------------+
| user() | database() |
+----------------+------------+
| root@localhost | test |
+----------------+------------+
1 row in set (0.00 sec)

如果你一定要钻这个牛角尖的话,那我只能说,没解。
iihero_ 2010-06-28
  • 打赏
  • 举报
回复
你要创建表,不可能不知道所用的数据库名。。。。我不是没看到你提出的要求。
沉沦 2010-06-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 iihero 的回复:]
mysql> show create database foo;
+----------+-------------------------------------------------------------+
| Database | Create Database |
+----------+----------------------------------------------……
[/Quote]

iihero 大哥 貌似没有看清楚我的题目。。。

红色字体部分。。。
iihero_ 2010-06-28
  • 打赏
  • 举报
回复
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)

56,677

社区成员

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

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