导入SP时候Locate报collations错误

Fallenking 2014-01-28 11:35:20
导入一个patch.sql, 该patch中有创建一个view,用到了locate方法,导入出现错误
ERROR 1267 (HY000) at line 311: Illegal mix of collations (latin1_swedish_ci,COERCIBLE) and (cp850_general_ci,IMPLICIT) for operation 'locate'
311行是该sp_vol_dup存储过程:

DROP VIEW IF EXISTS `sp_vol_dup`;
CREATE VIEW `sp_vol_dup`` (`view_id`, `volid`, `dupid`) AS
SELECT DISTINCT
`svg`.`view_id`,
`v`.`volid`,
IF(`vd`.`dupid` IS NULL OR `vd`.`dupid` = 0, `v`.`volid`,
IF(`vd`.`dupid` = `v`.`volid`, vd.dupid,
IF(LOCATE(CONCAT('+',CAST(`vd`.`dupid` AS CHAR),'+'), GetVolidList(0))>0,
`vd`.`dupid`, `v`.`volid`))) AS `dupid`
FROM
`tb_view_gvid` AS `svg`
LEFT OUTER JOIN `tb_volume` AS `v`
ON `v`.`gvid` = `svg`.`gvid`
LEFT OUTER JOIN `tb_volume_duplicate` AS `vd`
ON `vd`.`volid` = `v`.`volid`
ORDER BY `svg`.`view_id`, `v`.`name` AS


跟字符集有关系么?

mysql> show variables like 'character_set_%';
+--------------------------+----------------------------------------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------------------------------------+
| character_set_client | cp850 |
| character_set_connection | cp850 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | cp850 |
| character_set_server | latin1 |
| character_set_system | utf8 |
+--------------------------+----------------------------------------------------------------+
mysql> show variables like 'collation%';
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | cp850_general_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
+----------------------+-------------------+

...全文
144 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Fallenking 2014-02-17
  • 打赏
  • 举报
回复
我尝试过设置set character_set变量的命令,但是不是永久改变mysql字符集。
Fallenking 2014-02-13
  • 打赏
  • 举报
回复
还是考虑该数据库的设置,如何将 character_set_client , character_set_connection ,character_set_results 设置成 latin1 collation_connection 设置成 latin1_swedish_ci 我试过该my.ini,重启Mysql服务,不成功。
Fallenking 2014-02-13
  • 打赏
  • 举报
回复
Hi 有人回复么?
trainee 2014-02-01
  • 打赏
  • 举报
回复
是concat函数提示的错误 + 的字符集是character_set_client= cp850 dupid 的字符集是 character_set_database =latin1 两者的字符集不一样, 不能concat 可用convert(... using 字符集)转化其中一个, 再连接。 如convert('+' using latin1)

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧