MySQL JOIN操作报错问题小解
程序员文章站
2022-05-19 15:30:14
...
上面的调整基本上能解决大部分此类问题,但是我们的存储过程依然执行不了。经过一番分析,发现我们的存储过程中会新建一个临时表,代码大概是这样: 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
推荐阅读
-
mysql 数据迁移有关问题,所有的.frm文件报错·
-
MySQL 8.0.18 Hash Join不支持left/right join左右连接问题
-
MySQL-5.1.x在RH5上安装报错的问题
-
详解mysql密码遗忘和登陆报错的问题解决
-
重新restore了mysql到另一台机器上后mysql 编码问题报错
-
mysql not in、left join、IS NULL、NOT EXISTS 效率问题记录
-
重新restore了mysql到另一台机器上后mysql 编码问题报错
-
Mysql5.7.14安装配置方法操作图文教程(密码问题解决办法)
-
mysql报错1033 Incorrect information in file: ‘xxx.frm’问题的解决方法
-
解决php用mysql方式连接数据库出现Deprecated报错问题