2013-05-17 80 views
0

這是我的數據庫架構:爲什麼我得到這個奇怪的結果:[BLOB - ...]?

Post: 
id 
title 
body 
date 

Tag: 
id 
title 

Post_Tag: 
id 
id_post 
id_tag 

Comment: 
id 
id_post 
body 
date 

,這是我的查詢:

SELECT 
    Post.id AS post_id, 
    Post.title AS post_title, 
    Post.body AS post_body, 
    GROUP_CONCAT(CONCAT(Tag.id, "|", Tag.title) SEPARATOR '#') AS tags, 
    COUNT(Comment.id) AS comment_count 
FROM Post 
LEFT JOIN Comment ON Post.id = Comment.id_post 
LEFT JOIN Post_Tag ON Post.id = Post_Tag.id_post 
LEFT JOIN Tag ON Tag.id = Post_Tag.id_tag 
GROUP BY Post.id 
ORDER BY Post.date ASC 

有人能告訴我爲什麼我收到這些奇怪的結果([BLOB - ...])以下標籤列?

id title   body   tags   comment_count 
1 hello guys blablabla... [BLOB - 8B]   8 
2 hello all blablabla... [BLOB - 14B]  3 
3 how to tell blablabla... [BLOB - 8B]   5 
4 hello world blablabla... [BLOB - 5B]   7 
+0

http://dev.mysql.com/doc/refman/5.0/en/blob.html – RRikesh

+0

確定,但我怎麼能得到正確的結果:)? – user2393238

回答

0

替換:

GROUP_CONCAT(CONCAT(Tag.id, "|", Tag.title) SEPARATOR '#') AS tags, 

有了:

CAST(GROUP_CONCAT(CONCAT(Tag.id, "|", Tag.title) SEPARATOR '#') AS CHAR) AS tags, 

文檔:CAST function

1

這是一個比較知名的配置問題:您group_concat_max_len設置爲一個較大的值,迫使MySql使用BLOB而不是varchar秒的結果爲group_concat

要修復,請在my.inimy.cnf文件中將group_concat_max_len設置爲512,然後重新啓動MySql。

這是link to a post with more information

0

您也可以使用CONVERT()和BLOB數據轉換爲utf8

CONVERT(GROUP_CONCAT(CONCAT(Tag.id, "|", Tag.title) SEPARATOR '#') AS tags USING utf8), 
相關問題