我在mysql的命令行insert一条记录里面包含中文,我给中文那个字段定义的长度是50,我实际添加的只有两个汉字
他还会超出长度范围
但是换成字符就可以了
为什么?
怎么解决呢?
他还会超出长度范围
但是换成字符就可以了
为什么?
怎么解决呢?
解决方案 »
- MEDIABLOB字段变成BLOB字段是怎么回事?
- MySQL 数据,如何移走binlog到一个专门的log目录下?
- 求救!存储过程出错
- 急求:在Linux(redhat9.0)下以非ROOT用户安装MYSQL方法
- 如何在数据库中找出最近一周过生日的人
- mysql中的中文乱码问题 急 高手帮帮忙
- 项目紧急求救啊,mssql存储过程迁移到mysql。
- 将mysql下的data数据库目录删除后,不能用备份恢复的紧急问题
- 帮我看一下我配的my.ini,支持innodb表 事务
- 查找并修改products_name不含android的其他产品的
- 如何把搜索结果连接成一个字符串?
- cidr的insert问题
[/align]
需要注意的是,要修改的地方非常多,相应的修改方法也很多。下面是一种最简单最彻底的方法:
一、Windows
1、中止MySQL服务
2、在MySQL的安装目录下找到my.ini,如果没有就把my-medium.ini复制为一个my.ini即可
3、打开my.ini以后,在[client]和[mysqld]下面均加上default-character-set=utf8,保存并关闭
4、启动MySQL服务
二、Linux
1、中止MySQL服务(bin/mysqladmin -u root shutdown)
2、在/etc/下找到my.cnf,如果没有就把MySQL的安装目录下的support-files目录下的my-medium.cnf复制到/etc/下并改名为my.cnf即可
3、打开my.cnf以后,在[client]和[mysqld]下面均加上default-character-set=utf8,保存并关闭
4、启动MySQL服务(bin/mysqld_safe &)
非常简单,这样的修改一劳永逸,今后MySQL一切相关的默认编码均为UTF-8了,创建新表格的时候无需再次设置
需要注意的是,当前数据库中已经存在的数据仍保留现有的编码方式,因此需要自行转码,方法在网上有很多,不再赘述。
查看数据库字符集的若干命令:
show variables like 'character\_set\_%';
SHOW VARIABLES LIKE 'collation_%';
好像命令行运行的MySQL命令不支持UTF8,插入后好像什么都没有,所以
插入数据时可以执行 set names gbk;
之后 set names utf8;
或者使用交互工具插入。
mysql> use sofa
Database changed
mysql> select * from test;
+------+--------+
| id | name |
+------+--------+
| 2 | 娴嬭瘯 |
| 1 | 娴嬭瘯 |
+------+--------+
2 rows in set (0.00 sec)
mysql> set names gbk;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from test;
+------+------+
| id | name |
+------+------+
| 2 | 测试 |
| 1 | 测试 |
+------+------+
2 rows in set (0.00 sec)
mysql> show create table test;
+-------+---------------------------------------------------
------------+
| Table | Create Table
|
+-------+---------------------------------------------------
------------+
| test | CREATE TABLE `test` (
`id` int(11) DEFAULT NULL,
`name` varchar(10) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
+-------+---------------------------------------------------
------------+
1 row in set (0.17 sec)
mysql> insert into test value(3,'明天')
-> ;
Query OK, 1 row affected (0.14 sec)
mysql> select * from test;
+------+------+
| id | name |
+------+------+
| 3 | 明天 |
| 2 | 测试 |
| 1 | 测试 |
+------+------+
3 rows in set (0.08 sec)