热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

MySQLJOIN操作报错问题小解

上面的调整基本上能解决大部分此类问题,但是我们的存储过程依然执行不了。经过一番分析,发现我们的存储过程中会新建一个临时表,代码大概是这样:INSERTINTOtmp(region,cell,relation)SELECTDISTINCTr.region,t.cell,-1FROMrr_tmprLEFTJOIN(

上面的调整基本上能解决大部分此类问题,但是我们的存储过程依然执行不了。经过一番分析,发现我们的存储过程中会新建一个临时表,代码大概是这样: INSERT INTO tmp(region, cell, relation)SELECT DISTINCT r.region, t.cell, -1FROM rr_tmp r LEFT JOIN (

上面的调整基本上能解决大部分此类问题,但是我们的存储过程依然执行不了。经过一番分析,发现我们的存储过程中会新建一个临时表,代码大概是这样:

INSERT INTO tmp(region, cell, relation)
SELECT DISTINCT r.region, t.cell, -1
FROM rr_tmp r LEFT JOIN ( SELECT DISTINCT region, cell FROM ri_tmp ri, ce_tmp ct WHERE ri.region=ce.region) t
ON r.region=t.region WHERE r.region is null;

我们怀疑字符编码不一致的原因是这个临时表的字符编码与rr_tmp表的字符编码不一致导致的,但是如何控制临时表的字符编码呢?

临时表的字符编码其实就是数据库的默认字符编码,通过 show create database test_db 可以看到数据库的字符编码 将数据库的字符编码修改成与rr_tmp的字符编码一致,就OK了

alter database test_db characeter set utf8

Date: 2015-02-04T15:58+0800

Author: CobbLiu

Org version 7.9.3f with Emacs version 24

推荐阅读
author-avatar
亮仔
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有