求助MYSQL5.0的问题,远程数据库,在用COMMAND LINE中用SQL插入数据时出现错误
如题,在插入带有中文的记录时出现错误data too long for column 'name',请指教该如何解决?
另外,在插入之前执行set names gbk后可以插入带有中文的记录,但太麻烦,每次重启COMMAND LINE后都要执行一次,求指教如何才能正常插入带有中文的记录?注意,是远程数据库,买的。
(网上的解决方案多是用于本地数据库的)
补充:对了,在PHPMYADMIN中可以直接插入带有中文的记录而没有出现错误。
另,在VB中用SQL语言插入带有中文的记录没有提示错误。是不是COMMAND LINE CLIENT的问题?
追问:不是。新建表的时候设的是varchar(50),40个英文字符都不会出现这个错误,但是一个中文字符都会出现这个错误。
答案:data too long for column 'name' 你插入的数据肯定超过name字段的长度了。
其他:设置字段的内容为TEXT,即为文本字段 字符集冲突导致中文乱码,你可以把set names gbk放到全局文件里,这步不能省,要不然把你的数据库连接,数据库表的字符集,页面编码,http头的字符集都统一改成gbk,那样更费事。 设置字段的内 容为TEXT,即为文本字段 然后就好了 对于数据库级的字符集,如果没有办法重建数据库,可以在my.cnf文件中使用character-set-server = utf8(要重启数据库服务),对于之前已经存在数据库,此参数不产生影响。如果之前的数据库A是latin1,在A中创建的表默认还是latin1,除非指定DEFAULT CHARSET!然而对于新建的数据库,则继承 my.cnf文件中使用character-set-server = utf8!
[root@rac3 ~]# more /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
old_passwords=1
character-set-server = utf8
关闭数据库服务,并重新启动!
[root@rac3 ~]# mysqladmin shutdown
[root@rac3 ~]# mysqld_safe &
[1] 15102
[root@rac3 ~]# Starting mysqld daemon with databases from /var/lib/mysql
[root@rac3 ~]# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.0.45 Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> show variables like '%server%';
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| character_set_server | utf8 |
| collation_server | utf8_general_ci |
| server_id | 0 |
+----------------------+-----------------+
3 rows in set (0.00 sec)
--重新建立数据库,查看其默认字符集:为utf8
mysql> create database yql;
Query OK, 1 row affected (0.00 sec)
mysql> use yql;
Database changed
新建表的默认字符集和数据库的默认字符集一致!
mysql> create table t(id int);
Query OK, 0 rows affected (0.00 sec)
mysql> show create table t;
+-------+-------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+-------------------------------------------------------------------------------------+
| t | CREATE TABLE `t` (
`id` int(11) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
+-------+-------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> show create database yql \G;
*************************** 1. row ***************************
Database: yql
Create Database: CREATE DATABASE `yql` /*!40100 DEFAULT CHARACTER SET utf8 */
1 row in set (0.00 sec)
ERROR:
No query specified
上一个:mysql怎么将查询到的100条记录插入到另外一张表里面呀
下一个:如何在ubuntu11.10下启动或者安装mysql,我想用navicat连接