【问题标题】:mysql: Illegal mix of collations in a store procedure problemmysql:存储过程中的排序规则的非法混合问题
【发布时间】:2011-03-14 07:47:41
【问题描述】:

当我调用我的这个存储过程时,我得到这个错误:Illegal mix of collations (greek_general_ci,IMPLICIT) and (latin1_swedish_ci,IMPLICIT) for operation '='

DELIMITER //

CREATE PROCEDURE setVehicleStats (vehID text, vehStatus text, vehLat double, vehLon double)
BEGIN

    UPDATE vehicles SET st=vehStatus, lat=vehLat, lon=vehLon WHERE id=vehID;

END//

虽然我在直接运行 UPDATE 查询时没问题UPDATE vehicles SET st='Καλημέρα' WHERE id='A001';

我试图显式声明每列的字符集等。问题似乎只在我调用过程时出现!有什么帮助吗??谢谢...

【问题讨论】:

  • 你到底为什么要为 ID 和状态使用文本数据类型 - 你不觉得这有点极端吗??

标签: mysql stored-procedures collation


【解决方案1】:

我认为问题在于vehStatus 参数的排序规则。似乎服务器或连接默认字符集设置为latin1greek_general_ci 排序规则使用greek 字符集(ISO 8859-7)。 尝试像这样声明您的参数:

vehStatus text character set greek

【讨论】:

  • 这解决了问题!谢谢你。表的默认字符集设置为希腊语。您指的是哪个默认字符集?
  • 服务器和连接有默认值。在这种情况下,我认为导致问题的原因是服务器默认字符集。
猜你喜欢
  • 1970-01-01
  • 2012-08-28
  • 2014-03-06
  • 2011-01-20
  • 2017-12-25
  • 1970-01-01
  • 2010-11-03
  • 2012-12-13
  • 2017-10-19
相关资源
最近更新 更多