下面是我的存储过程, 主要操作论坛的表(discuz论坛), 调用时, 如果$message参数内容多, 就会提示:
Data too long for column '$message' at row 1
把同样长度的内容, 用论坛发贴发进去, 却不会出错, 很正常!!!
message字段的类型与这里的$message参数的类型一样,都是mediumtext,即便换成text也不行.
我在.net中调用的存储过程, 用的 Mysql-Connector-Net ,问题出在哪了? 
是存储过程的 bug, 还是编码的问题, 还是 Mysql-Connector-Net 问题?CREATE PROCEDURE AddTopic($fid smallint, $author char(15), $subject char(80), $message mediumtext)
BEGIN
    DECLARE $authorid mediumint;
    DECLARE $postime int;
    
    SELECT uid INTO $authorid FROM cdb_members WHERE username = $author;
    SELECT MAX(dateline) INTO $postime FROM cdb_posts;
    IF $postime IS NULL THEN
       SET $postime = 0;
    END IF;
    
    INSERT INTO cdb_threads (fid, subject, author, authorid, dateline, lastpost) VALUES ($fid, $subject, $author, $authorid, $postime, $postime);
    UPDATE cdb_forums SET threads = threads + 1 WHERE fid = $fid;
    INSERT INTO cdb_posts (fid, tid, subject, author, authorid, message, dateline) VALUES ($fid, last_insert_id(), $subject, $author, $authorid, $message, $postime);
    UPDATE cdb_forums SET posts = posts + 1 WHERE fid = $fid;
END;

解决方案 »

  1.   

    请参考http://bbs.phpv.net/showthread.php?s=68ebb24afa942a2b5b16c372e57c0a19&p=45698&mode=linear
      

  2.   

    我的discuz是gbk版的, 和这个问题不一样, 他的是 utf-8
      

  3.   

    到底是哪的问题呢? 有人说要把数据转换为utf-8再入库, 还有人说要一句什么 set names = 'gbk', 到底关键在哪呢?
      

  4.   

    能具体点吗? 我在连接串中已经设置了 gbk:
    Server=localhost;Port=3306;Database=discuz;Uid=root;Pwd=123;Charset=gbk;
      

  5.   

    你在读出的时候是什么编码,mysql设置的是什么编码,在入库的时候是什么编码,保持一致就可以了
    加上这个试试 set names = 'gbk'
      

  6.   

    链接串有带了, 这个不会自动应用吗?
    Server=localhost;Port=3306;Database=discuz;Uid=root;Pwd=123;Charset=gbk;还有, set names = 'gbk' 要跟执行sql语句一样执行一下是吗? 有没有权限问题
      

  7.   

    我在存储过程中加了 set names = 'gbk' , 说语法错误. .net下用过mysql数据库的, 请帮帮我!
      

  8.   

    http://community.csdn.net/Expert/topic/5504/5504252.xml?temp=.6889459这里还有50分, 一共150分, 能说的具体一点吗?