mysql 表设字符_Mysql中给数据库,表,字段设置字符编码

总结:

错误是在你的结果集中有两种字符集。

比如说你在两个表联合查询,一个表的字符集是latin1,另一个是utf8,

这样在你的结果集中有两种字符集,mysql会报上面的错误。

一个表中不同的字段使用不同的字符集,也是一个道理。

用SHOW   CREATE

TABLE   table_name;可以看出具体的字符集设置。

查了帮助手册,说是user的字符集没有设,默认为utf8,将其转为latin1或gb2312等字符集

解决方法:

将不同的字符集,转化成统一的字符集。

After   an

upgrade   to   MySQL

4.1,   the   statement

fails:

mysql>   SELECT

SUBSTRING_INDEX(USER(),'@',1);

ERROR   1267

(HY000):   Illegal   mix

of   collations

(utf8_general_ci,IMPLICIT)   and

(latin1_swedish_ci,COERCIBLE)

for   operation

'substr_index'

The   reason

this   occurs   is

that   usernames   are

stored   using   UTF8

(see   section   11.6

UTF8   for   Metadata).

As   a   result,

the   USER()   function

and   the   literal

string   '@'   have

different   character   sets

(and   thus   different

collations):

mysql>   SELECT

COLLATION(USER()),

COLLATION('@');

+-------------------+-------------------+

|   COLLATION(USER())   |

COLLATION('@')         |

+-------------------+-------------------+

|   utf8_general_ci       |

latin1_swedish_ci   |

+-------------------+-------------------+

One   way

to   deal   with

this   is   to

tell   MySQL   to

interpret   the   literal

string   as   utf8:

mysql>   SELECT

SUBSTRING_INDEX(USER(),_utf8'@',1);

+------------------------------------+

|   SUBSTRING_INDEX(USER(),_utf8'@',1)   |

+------------------------------------+

|   root

|

+------------------------------------+

Another   way

is   to   change

the   connection   character

set   and   collation

to   utf8.   You

can   do   that

with   SET   NAMES

'utf8'   or   by

setting   the   character_set_connection   and

collation_connection   system   variables

directly.

表的编码转换可以用:(MySQL   Version

>   4.12)

ALTER   TABLE

tbl_name   CONVERT   TO

CHARACTER   SET   charset_name;

之前的版本可以用:

ALTER   TABLE

tbl_name   CHARACTER   SET   charset_name;

MySQL官方解释:

http://dev.mysql.com/doc/refman/5.0/en/charset-collation-charset.html

附加:

修改字段类型的方法:(经过 google 搜索)

登录MYSQL后执行这个语句就可以了:

复制SQL代码保存代码ALTER TABLE `phrase` CHANGE

`varname` `varname` VARCHAR( 250 ) NOT NULL;

修改字段字符集的方法:

mysql〉show   full

columns   from   table就会发现两个字段的字符集是不一样的。

通过用

ALTER   TABLE

`tname`     CHANGE   `column`

`column`   VARCHAR(   15

)   CHARACTER   SET

latin1   NOT   NULL。

(假设变更为字符型,並且字符集类别为latin1   latin1

)

修改.ini文件的方法:(不建议使用)

在mysql 的安装目录下有一个my.ini文件,

打开找到[mysql]下的default-character-set=*****,改成default-character-set=gb2312,重启mysql 即可。

自己总结的:

修改字段的编码:

alter table TABLE_NAME change COLUMN_NAME

COLUMN_NAME varchar(255) character set utf8 not null

alter table TABLE_NAME modify COLUMN_NAME

varchar(255) character set utf8;

注意:

not null 必须在 character set  utf8 后面

修改表的编码:

alter table TABLE_NAME character set utf8;

修改数据库的编码:

alter database DATABASE_NAME character set

utf8;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值