Я использую этот запрос для создания меню архива блога, например:
SELECT CONCAT( MONTHNAME(published), ' ', YEAR(published)) AS monthyear,
COUNT(*) AS total
FROM blog_articles
WHERE status = 'Online' AND Year(published) = 2012
GROUP BY CONCAT( MONTHNAME(published), ' ', YEAR(published))
Ожидаемый результат:
January 2012 103
February 2012 87
March 2012 23
April 2012 99
Фактический результат:
Счет правильный, но вместо ментального восточного следует читать:
May 2012 1
Как я могу избавиться от забавных персонажей и вместо этого использовать английский язык?
Когда я запускаю этот запрос в phpMyAdmin, символы в порядке.
ОБНОВЛЕНИЕ
Я только что попробовал запустить conn.Execute ("SET lc _time _name = 'en _US';" )и не решил проблему. Для проверки я использовал conn.Execute («SELECT @@lc _time _имена;» ), и он вернул "en _US".
ДРУГОЕ ОБНОВЛЕНИЕ
Поискав на форумах MySQL связанные проблемы, я нашел другого парня, жалующегося на ту же проблему. Гуру MySQL сказал:
"This is the famous (infamous) server returns wrong types for CONCAT of a number and a string. One has to use the (cast) form for this to work, the driver can't tell what the real type is."
Я не уверен, что такое бросок или как решить эту проблему.