2016-01-21 59 views
2

試圖與下面的查詢WordPress的MySQL查詢不能與CONCAT創建視圖,並像

SELECT * from wp_posts AS vender 
LEFT OUTER 
JOIN wp_postmeta AS vender_campaign ON vender_campaign.meta_key = 'vender' 
    AND vender_campaign.meta_value LIKE CONCAT('%"',vender.ID,'"%') 
WHERE vender.post_status = 'publish' AND vender.post_type = 'vender' 

但收到錯誤創建視圖:

Illegal mix of collations (utf8mb4_unicode_ci, IMPLICIT) and (utf8mb4_general_ci, IMPLICIT) for operation 'like'

但如果我執行在phpMyAdmin窗口此查詢它工作正常。

任何想法是什麼問題?

回答

3

看來,wp_posts和wp_postmeta有不同的編碼,utf8mb4_unicode_ci和utf8mb4_general_ci。

該查詢的工作原理是因爲您可以將這些表的結果看作連接,但無法使用不同的編碼創建視圖。

我會改變這兩個表中的一個的編碼來匹配另一個。

編輯:我想你也可以格式化你的查詢方式,在這種方式下,你可以將其中一個文本的編碼轉換爲另一個文本的編碼(但是如果你能夠統一的話儘管如此編碼) 在這裏看到:http://dev.mysql.com/doc/refman/5.0/en/charset-convert.html

+0

我只是cheked和兩個表具有相同的編碼,默認的字符集= utf8mb4 COLLATE = utf8mb4_unicode_ci – hemant

+0

嘗試的單層表而不加入SELECT * FROM wp_postmeta AS vender_campaign其中vender_campaign.meta_key = '賣主' AND vender_campaign .meta_value LIKE CONCAT('%'',360,''%')仍然會出現相同的錯誤 – hemant

+0

我想解決你的問題的關鍵是找到utf8mb4_general_ci(注意一般)來自哪裏。 也許你在concat中輸入的字符串會得到它,如果表格不是......但是,我只是猜測。 –