解决MySQL联表时出现字符集不一样

mysql 建表时都会设置表的字符集和排序规则,通常是 utf8,不过我这边习惯建表的字符集是 utf8mb4,排序规则是 utf8mb4_unicode_ci。有些 utf8mb4 的表默认排序规则是 utf8mb4_general_ci,导致在联表操作时会报错误:

Illegal mix of collations

其实这个就是联表时由于表的排序规则不一致才会引起的,这个可以通过将表的排序规则改成一致来解决。

但是有时表已经在线上了,无法修改,而现在又要急着用,可以通过下面的方法:

UPDATE target LEFT JOIN  source ON( target.artnr = source.artnr COLLATE latin1_swedish_ci ) SET target.barcode = source.barcode

通过红色标注的方法来让查询时联表的排序规则一致。

还有,设置字符集 utf8mb4 可以保存 emoji 表情。

时间: 2024-10-28 12:02:20

解决MySQL联表时出现字符集不一样的相关文章

Python数据库操作 Mysql数据库表引擎与字符集#学习猿地

# Mysql数据库表引擎与字符集 ![](./imgs/752951346A5F4E7EBDE362FA97107707.png) ### 1.服务器处理客户端请求 其实不论客户端进程和服务器进程是采用哪种方式进行通信,最后实现的效果都是:**客户端进程向服务器进程发送一段文本(MySQL语句),服务器进程处理后再向客户端进程发送一段文本(处理结果).**那服务器进程对客户端进程发送的请求做了什么处理,才能产生最后的处理结果呢?客户端可以向服务器发送增删改查各类请求,我们这里以比较复杂的查询请

Mysql 建表时,日期时间类型选择

mysql(5.5)所支持的日期时间类型有:DATETIME. TIMESTAMP.DATE.TIME.YEAR. 几种类型比较如下: 日期时间类型 占用空间 日期格式 最小值 最大值 零值表示  DATETIME  8 bytes  YYYY-MM-DD HH:MM:SS  1000-01-01 00:00:00 9999-12-31 23:59:59 0000-00-00 00:00:00  TIMESTAMP  4 bytes  YYYY-MM-DD HH:MM:SS  197001010

(转)mysql创建表时反引号的作用

(转)mysql创建表时反引号的作用 试用navicat工具查看现网mysql建表语句时,发现表名和字段名都是反引号引起来的 1 2 3 4 5 6 7 8 9 10 11 CREATE TABLE `tab_notice_title_tv` (   `i_id` int(11) NOT NULL AUTO_INCREMENT,   `c_opcom_key` varchar(32) DEFAULT NULL,   `c_view_type` int(11) DEFAULT '1' COMMEN

MySQL 创建表时,设置时间字段自己主动插入当前时间

MySQL 创建表时,设置时间字段自己主动插入当前时间 DROP TABLE IF EXISTS `CONTENT`; CREATE TABLE `CONTENT` ( `ID` char(20) NOT NULL, `CURRENT_TIME` timestamp not null default current_timestamp, PRIMARY KEY (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

oracle与mysql创建表时的区别

oracle创建表时,不支持在建表时同时增加字段注释.故采用以下方式: #创建表CREATE TABLE predict_data as ( id integer NOT NULL, uid varchar2(80), mid varchar2(80), time date , content varchar2(300), constraint predict_data primary key (id) );#字段注释comment on table predict_data is '预测表';

MySQL 创建表时,设置时间字段自动插入当前时间

MySQL 创建表时,设置时间字段自动插入当前时间 DROP TABLE IF EXISTS `CONTENT`; CREATE TABLE `CONTENT` ( `ID` char(20) NOT NULL, `CURRENT_TIME` timestamp not null default current_timestamp, PRIMARY KEY (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

mysql联表查询,使用phpStudy自带的

一.内联结.外联结.左联结.右联结的含义及区别在SQL标准中规划的(Join)联结大致分为下面四种:1.内联结:将两个表中存在联结关系的字段符合联结关系的那些记录形成记录集的联结.2.外联结:分为外左联结和外右联结.左联结A.B表的意思就是将表A中的全部记录和表B中联结的字段与表A的联结字段符合联结条件的那些记录形成的记录集的联结,这里注意的是最后出来的记录集会包括表A的全部记录.右联结A.B表的结果和左联结B.A的结果是一样的,最后出来的记录集会包括表B的全部记录.具体如下: Select l

MySQL建表时列名同保留字重复问题解决办法

建表时遇到遇到属性名同MySQL的保留字相同导致不能建表的问题,如下SQL语句: CREATE TABLE TBL_ACCOUNT_FROZEN_RECORD ( ID BIGINT NOT NULL AUTO_INCREMENT, TRADE_FLOW_ID VARCHAR(60) NOT NULL, ACCOUNT_NO VARCHAR(32) NOT NULL, INITIATOR VARCHAR(16) NOT NULL, OPERATE_TYPE VARCHAR(32) NOT NUL

Django解决扩展用户表时,后台Admin显示密码为明文的问题

小生博客:http://xsboke.blog.51cto.com 如果有疑问,请点击此处,然后发表评论交流,作者会及时回复(也可以直接在当前文章评论). -------谢谢您的参考,如有疑问,欢迎交流 Django解决当扩展用户表时,用户继承AbstractUser后,后台Admin会显示密码为明文的问题 先看项目列表 1.今天在写一个扩展Django默认的用户表功能时,遇到了一个问题.先给大家看一下我写的,扩展用户表的models[apps.users.models],我是通过继承Abstr