各位大虾们。。帮我解决下面这问题吧。。建表时我加入了character set utf8;,可后面还是出现了这个问题,在sqlyog中插入insert into admin(name,password,power) values('etp','b783ea905e5e9e51bd2f6b88','所有权限');就是power的所有权限插不进去sql命令运行时出现下面的错误。
error 1406<22001>:data too long for coumn 'power' at row 1

解决方案 »

  1.   

    --所有字段加[]insert into [admin]([name],[password],[power]) 
    values('etp','b783ea905e5e9e51bd2f6b88','所有权限');
    --如果字段名或表名与系统保留字重复,都需要加[]
      

  2.   

    sqlyog没用过,会不会是这个工个不支持造成的。这种可能性是有的,我在mysql自带的工具mysql.exe下添加不了中文记录,但在php中是可以的。在EMS manager 中好像也不行,不知道记错没有。
      

  3.   

    加[]是SQLSERVER的用法。MYSQL里没有这个用法。这个是因为编码没有设置对造成的。
    在MY.CNF 或者MY.INI里添加[mysql]default-character-set=utf8[mysqld]default-character-set=utf8然后重新启动MYSQL服务器。如果要检查你的编码是否正确。
    输入 show variables like '%char%';
      

  4.   

    如果是中文乱码的话,
    在MY.CNF 或者MY.INI里添加
    [mysql]
    default-character-set=gbk
    [mysqld]
    default-character-set=gbk然后重新启动MYSQL服务器。不过,你这个错误
    error 1406<22001>:data too long for coumn 'power' at row 1
    会不会是表的问题呀.字段长度设的太小了?
      

  5.   

    sql命令运行时出现下面的错误。
    error 1406<22001>:data too long for coumn 'power' at row 1
    这都提示了,数据超长了,看你power字段定义长度是多少
      

  6.   

    估计是你列的字符集没有设置正确,当遇到你传入的中文以后mysql将它用latin1转换,结果长度超过了你的定义范围,修改列字符集
      

  7.   

    确定你的character_set_client = utf8;
    默认情况下character_set_client = latin1;在执行INSERT语句之前,可以执行SET NAMES 'utf8';
    这样会自动设置
    character_set_client = utf8;
    character_set_connection = utf8;
    character_set_results = utf8;这样应该能解决lz的问题
      

  8.   

    我的也是这个问题呀。Data too long for column 'adminName' at row 1。不是建表的问题,而是MYSQL本身的问题