mysql中建表插入中文老提示有错??? mysql想支持中文,要把编码方式改成什么?改了gbk和gb2312方式时用varchar定义字段时写入中文老提示有错误,说太长溢出。不管你定义有多大,都有这个问题,请问怎么解决呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不会阿,那你设置成UTF-8试一下 改成utf-8还是有问题number name1 我2 nicolasDescriptiondata too long for column 'name' at row 1 我用gbk就挺好的,为何你不行..... 一、Windows1、中止MySQL服务2、在MySQL的安装目录下找到my.ini,如果没有就把my-medium.ini复制为一个my.ini即可3、打开my.ini以后,在[client]和[mysqld]下面均加上default-character-set=utf8,保存并关闭4、启动MySQL服务二、Linux1、中止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 sofaDatabase changedmysql> 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) 在my.ini里找到 sql-mode=”STRICT_TRANS_TABLES,NO_AUTO_Create_USER,NO_ENGINE_SUBSTITUTION” 把其中的 STRICT_TRANS_TABLES, 去掉,然后重启mysql就ok了 除了 my.ini 里改,如果表是先前创建的,还要修改表的字符集和列的字符集啊!我先前也碰过这个问题。 mysql禁止修改栏位数据 关于 mysql安装后无法启动的问题 按照IT经验翻译过来的,对不? PL/SQL问题,大侠帮帮忙!急急急! 精妙SQL语句,仅供参考! 启动mysql报错,怎么回事? 求教:找不到 mysqlclient 文件如何处理? mysql 和 mysql max 版本的有什么区别? ucenter整合应用,通信成功,却不能登录,数据库报错 Mysql8.0,如何根据json(数组)里的字段排序 mysql如何防止远程删除数据? 复合索引的问题,建立复合索引对字段数有什么限制吗?
number name
1 我
2 nicolas
Description
data too long for column 'name' at row 1
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)
sql-mode=”STRICT_TRANS_TABLES,NO_AUTO_Create_USER,NO_ENGINE_SUBSTITUTION”
把其中的
STRICT_TRANS_TABLES,
去掉,然后重启mysql就ok了