Я использую этот запрос для создания меню архива блога, например:
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, символы в порядке.
UPDATE
Я только что попробовал запустить conn.Execute( "SET lc_time_names = 'en_US';" ) и не решил проблему. Чтобы проверить, я использовал conn.Execute( "SELECT @@lc_time_names;" ), и он вернул "en_US".
ДРУГОЕ ОБНОВЛЕНИЕ
Поиск на форумах MySQL по смежным вопросам, я нашел другого парня, скулящего по той же проблеме. Гуру-гуру сказал:
"Это знаменитый (позорный) сервер возвращает неправильные типы для CONCAT числа и строки. Для этого нужно использовать форму (cast) для работа, драйвер не может определить, что такое настоящий тип."
Я не уверен, что такое бросок или как исправить эту проблему.