请教下
Delimiter ||
Create procedure call_repair(in a int,in b date)
Begin
Insert into repair (C_id,Time) value (a,b);
Update repair set State=’repair’ where C_id=a;
Update computer set If_repair=’repair’ where C_id=a;
end
Delimiter ;
这个存储过程,我输入创建这个存储过程后出现这个问题、
ERROR 1300 (HY000): Invalid utf8 character string: '’repair’'
是什么问题啊?我在computer里面的If_repair是varchar(10)
而repair表中的State是varchar(20)
但是要是不给repair加上单引号的话存储过程创建倒是没问题了,但是运行的时候出现这个问题
ERROR 1054 (42S22): Unknown column 'repair' in 'field list'
并且表里面的要更新的选项没有反应,求教怎么解决?

解决方案 »

  1.   

    Delimiter ||
    Create procedure call_repair(in a int,in b date)
    Begin
    Insert into repair (C_id,Time) value (a,b);
    Update `repair` set State=’repair’ where C_id=a;
    Update computer set If_repair=’repair’ where C_id=a;
    end
    Delimiter ;注意不是单引号。 repair 是保留字。
      

  2.   

    用你的这个输入后还是不行啊?。。用了后会出现ERROR 1300 (HY000): Invalid utf8 character string: '’repair’'这个问题,还有请教下保留字是什么意思?
      

  3.   

    字符集问题
    show variables like 'char%'; 
      

  4.   

    mysql> show variables like 'char%';
    +--------------------------+----------------------------------------------------
    -----+
    | Variable_name            | Value
         |
    +--------------------------+----------------------------------------------------
    -----+
    | character_set_client     | utf8
         |
    | character_set_connection | utf8
         |
    | character_set_database   | utf8
         |
    | character_set_filesystem | binary
         |
    | character_set_results    | utf8
         |
    | character_set_server     | utf8
         |
    | character_set_system     | utf8
         |
    | character_sets_dir       | C:\Program Files\MySQL\MySQL Server 5.0\share\chars
    ets\ |
    +--------------------------+----------------------------------------------------
    -----+
    8 rows in set (0.00 sec)
    用了后效果是这样的。。怎么解决?
      

  5.   

    这个界定符修改之后根本就没有用到,然后更新可以写成一条语句。
    Delimiter ||
    Create procedure call_repair(in a int,in b date)
    Begin
    Insert into repair (C_id,Time) value (a,b);
    Update `repair` set State=’repair’ where C_id=a;
    Update computer set If_repair=’repair’ where C_id=a;
    end ||
    Delimiter ;
      

  6.   

    State=repair 
    注意一下你用的是什么鬼符号! 请使用单引号' !Delimiter ||
    Create procedure call_repair(in a int,in b date)
    Begin
    Insert into repair (C_id,Time) value (a,b);
    Update `repair` set State='repair' where C_id=a;
    Update computer set If_repair='repair' where C_id=a;
    end ||
    Delimiter ;