操作“=”的排序规则的非法混合
Posted
技术标签:
【中文标题】操作“=”的排序规则的非法混合【英文标题】:Illegal mix of collations for operation '=' 【发布时间】:2016-12-08 20:20:22 【问题描述】:我想从表'invoice_data'中选择数据,其中公司名称的值将从表'crm_accounts'中按电子邮件值选择。我收到类似
的错误用于操作“=”的排序规则 (utf8_unicode_ci,IMPLICIT) 和 (utf8_general_ci,IMPLICIT) 的非法混合
这是我的型号代码:
public function view_invoice($email)
$this->db->select('invoice_data.*, crm_accounts.company');
$this->db->from('invoice_data');
$this->db->join('crm_accounts', 'invoice_data.cname = crm_accounts.company', 'inner');
$this->db->where('crm_accounts.email', $email);
$query = $this->db->get();
return $query->result_array();
【问题讨论】:
看起来你的表有不同的排序规则 对不起,我不明白这是什么意思? 您的表格有不同的编码 【参考方案1】:试试这个;
public function view_invoice($email)
$this->db->select('invoice_data.*, crm_accounts.company');
$this->db->from('invoice_data');
$this->db->join('crm_accounts', 'invoice_data.cname = crm_accounts.company COLLATE utf8_unicode_ci', 'inner');
$this->db->where('crm_accounts.email', $email);
$query = $this->db->get();
return $query->result_array();
【讨论】:
你能描述一下吗?? 我添加了“COLLATE utf8_unicode_ci”,因此 crm_accounts.company 的排序规则与 invoice_data.cname 的排序规则相匹配。两个表的排序规则似乎不同,SQL 无法在不解析其中一个的情况下比较不同的排序规则。 知道了。谢谢。 它解决了我的问题,但现在它说检查 MariaDB 服务器的版本是否有正确的语法。我该怎么做? 您能分享一下生成的查询吗?以上是关于操作“=”的排序规则的非法混合的主要内容,如果未能解决你的问题,请参考以下文章