HoffmanSong 2009-12-15 16:04
浏览 445
已采纳

MySQL的Varchar只能插入一个中文字符,为什么??

在安装MySQl的时候,安装选择的字符集是UTF8,之后建立了数据表:
CREATE TABLE test (
id BIGINT NOT NULL,
testname VARCHAR(10) DEFAULT NULL,
testdesc VARCHAR(20) DEFAULT NULL,
teststate INTEGER DEFAULT 0,
testtype INTEGER DEFAULT 0,
PRIMARY KEY (id)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

在插入全英文的数据时,正常插入。
如:
insert into test(id,testname,testdesc,teststate,testtype) values (1,'abcdefghij','abcdefghijklmn',10,10);
当插入中文时,出现了一下问题:
insert into test(id,testname,testdesc,teststate,testtype) values (2,'一','abcdefghijklmn',10,10);
这条插入正常。

insert into test(id,testname,testdesc,teststate,testtype) values (3,'一二','abcdefghijklmn',10,10);
这条插入失败,提示:Data too long for column 'testname' at row 1

我想是不是因为每个汉字占用6个字节,所以长度不够,于是我重建了表,将VARCHAR(10)修改为VARCHAR(50),之后再插入第三条记录,依旧提示:Data too long for column 'testname' at row 1

请问这是怎么回事?
[b]问题补充:[/b]
肯定是出现了问题我才上来问的!
你答不了就一句我骗人。
你想看图!我传了图!

[b]问题补充:[/b]
之前之一用GBK编码,没出过问题!这次需要使用UTF8,我就重新安装了数据库!但出现这样的问题!我的my.ini文件中,也是如下的设置:
[mysql]
default-character-set=gbk

[b]问题补充:[/b]
哦,刚才补充错了!
my.ini
[mysql]
default-character-set=utf8

[b]问题补充:[/b]
多谢xiao1230提供的信息。
这个问题依旧在我这里没有解决。
最初怀疑是用了SQLyog这个MySQL的工具,导致内容被转码后存储进数据库,再后来连直接敲打都不成功。
我也是第一次遇到这样奇怪的问题。连头绪都没有。
我准备重新安装一次数据库试试。

  • 写回答

2条回答 默认 最新

  • weixin_42355128 2009-12-16 09:04
    关注


    我这用你的代码copy到数据库就好了
    没有问题
    是我把图给你截好了
    不是要看你的图
    可惜我不知道这个怎么贴图

    show create table 表名
    可以看到表的字符集

    如果你改了my.ini中的default-character-set=
    需要重起服务

    [img]http://hi.baidu.com/mr%5Fxyl/album/item/63248eb655d57f438bd4b2ad.html[/img]

    [url]http://hi.baidu.com/mr%5Fxyl/album/item/63248eb655d57f438bd4b2ad.html[/url]

    你可以上哪看看去

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?