【问题标题】:1271 - Illegal mix of collations for operation 'match' on Left Join1271 - 左连接上操作“匹配”的排序规则的非法混合
【发布时间】:2015-03-20 15:37:39
【问题描述】:

我正在尝试使用 LEFT JOIN 对 2 个表进行 MATCH

`jos_application_listing` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `description` text NOT NULL,
  `headline` text NOT NULL,
  `city` bigint(20) NOT NULL,
  `state` varchar(500) NOT NULL,
  `country` varchar(500) NOT NULL,
  `features` text NOT NULL,
  `listing_type` bigint(20) NOT NULL,
  `phone` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `website` varchar(1000) NOT NULL,
  `pictures` mediumtext,
  `address` varchar(100) NOT NULL DEFAULT '',
  `postal` varchar(25) NOT NULL DEFAULT '',
  `category` bigint(20) NOT NULL,
  `sub_category` bigint(20) NOT NULL,
  `latitude` float NOT NULL,
  `longitude` float NOT NULL,
  `listing_expire` varchar(255) NOT NULL DEFAULT 'normal',
  `featured_till` datetime NOT NULL,
  `facebook` text NOT NULL,
  `video` text NOT NULL,
  `video_size` text NOT NULL,
  `business_hours` text NOT NULL,
  `published` tinyint(4) NOT NULL,
  `featured` tinyint(4) NOT NULL,
  `UID` bigint(20) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

`jos_application_cities` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `city` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM CHARSET=utf8;

索引 -> > >

我在 jos_application_listing 上有一个全文索引(名称、标题、描述)

我在 jos_application_cities(城市)上有一个全文索引

查询 -> > >

SELECT * FROM jos_lnzon_listing 
LEFT JOIN jos_lnzon_cities ON jos_lnzon_listing.city = jos_lnzon_cities.id
WHERE MATCH (name,headline,description,jos_lnzon_listing.city)
AGAINST ('" . $searchQuery . "' IN BOOLEAN MODE)";

我看不到问题,但我收到以下错误:

1271 - 操作 'match' SQL=SELECT * FROM jos_lnzon_listing LEFT JOIN jos_lnzon_cities ON jos_lnzon_listing.city = jos_lnzon_cities.id WHERE MATCH (name,headline,description,jos_lnzon_listing.city) AGAINST ('+search term) 的排序规则的非法混合' 在布尔模式下)

【问题讨论】:

  • 当您使用主题标签作为全局前缀时,表前缀后仅使用 2 个下划线。例如#__lnzon_listing,这是推荐的查询方法。如果你手动定义前缀(不推荐),那么它只需要1个下划线,就像这样,jos_lnzon_listing
  • 嗨对不起错字,修复 - 我确实在 Joomla 中使用 #__lnzon_listing,但只是为了阅读我使用 jos_ 的问题

标签: mysql


【解决方案1】:

我遇到的排序错误通常是由于字符编码不匹配导致的 - 您是否尝试过将连接字符集显式设置为 UTF-8?

http://php.net/manual/en/mysqli.set-charset.php

恐怕我不知道在 Joomla 中做到这一点有多容易 :(.

您还可以检查列的排序规则,看看它们确实都是 UTF-8:https://stackoverflow.com/a/10014869/994291

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-20
    • 2021-03-16
    • 2016-02-01
    • 2016-12-08
    • 2011-12-06
    • 2014-12-03
    • 1970-01-01
    相关资源
    最近更新 更多