Web-Gate
где заказать сайт +1 (510) 491 89 19
Пн - Вс: 10 00 - 19 00
Профессиональное продвижение сайтов — поисковая оптимизация,
раскрутка сайта, разработка и создание сайта

Как поменять кодировку всех таблиц в MySQL базе

Отзывы ()

Теги:

А так же, в MODx могут выдаваться ошибки: Cannot modify header information - headers already sent by. Проблема заключается в неверно заданном параметре сравнения вашей БД. К примеру при установке кодировка utf8_general_ci а если зайти в PHP MyAdmin - и зайдете в одну из таблиц, то увидите Сравнение: latin1_swedish_ci

Рекомендуйте нас:

Конструктор Kano научит собирать ПК

Конструктор Kano научит собирать ПК

08.08.2014
Собрать компьютер в скором времени сможет каждый ребенок. Прививать полезные навыки в британском стартапе Kano решили с помощью уникального детского конструктора...

Страница диагностики для сайта от Google

Страница диагностики для сайта от Google

29.11.2011
Если вы обеспокоены положением дел у вашего сайта относительно поисковой системы Google, то вам обязательно пригодятся так называемая страница "Безопасного просмотра. Страница диагностики" для вашего сайта.
07.02.2012

Обычно текст ошибки выглядит так:

Execution of a query to the database failed - Illegal mix of collations (utf8_general_ci,COERCIBLE) and (latin1_swedish_ci,IMPLICIT) for operation 'if'

Warning: Cannot modify header information - headers already sent by (output started at /sata1/home/users/foldername/www/sitename.com/manager/includes/header.inc.php:7) in /sata1/home/users/shenevmer/www/sitename.com/manager/includes/document.parser.class.inc.php on line 2732

« MODx Parse Error »

MODx encountered the following error while attempting to parse the requested resource:
« Execution of a query to the database failed - Illegal mix of collations (utf8_general_ci,COERCIBLE) and (latin1_swedish_ci,IMPLICIT) for operation 'if' »
      SQL: SELECT `db_she`.`modx_site_templates`.templatename as name, `db_she`.`modx_site_templates`.id, `db_she`.`modx_site_templates`.description, `db_she`.`modx_site_templates`.locked, if(isnull(`db_she`.`modx_categories`.category),'Без категории',`db_she`.`modx_categories`.category) as category FROM `db_she`.`modx_site_templates` left join `db_she`.`modx_categories` on `db_she`.`modx_site_templates`.category = `db_she`.`modx_categories`.id ORDER BY 5,1
      [Copy SQL to ClipBoard]
 
Parser timing
  MySQL: 0,0442 s (0 Requests)
  PHP: 1333655752,1659 s  
  Total: 1333655752,2100 s

Если зайдете в управление БД (к примеру MySQL), то проблему можно увидеть в таком виде:
сравнение в БД

Хотя у вас при установке задавалась в настройках кодировка utf8_general_ci

Как поменять кодировку всех таблиц в MySQL базе

Поскольку в Базе данных могут быть десятки, сотни таблиц и в каждой в ручную изменять параметр кодировки сравнения это лишняя работа. Есть решение.

Итак, MySQL сервер версии 5.0 и выше, умеет выполнить вот такой вот запрос:

 

SELECT CONCAT('ALTER TABLE `', t.`TABLE_SCHEMA`, '`.`', t.`TABLE_NAME`, '` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;') as sqlcode
  FROM `information_schema`.`TABLES` t
 WHERE 1
   AND t.`TABLE_SCHEMA` = 'db_name'
 ORDER BY 1
SELECT CONCAT('ALTER TABLE `', t.`TABLE_SCHEMA`, '`.`', t.`TABLE_NAME`, '` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;') as sqlcode
FROM `information_schema`.`TABLES` t
WHERE 1
AND t.`TABLE_SCHEMA` = 'db_name'
ORDER BY 1

только заменяем db_name на имя вашей БД.

запрос в БД для смены кодировки

Нажимаем ОК

Полученный результат и будет тем скриптом который нам нужно еще раз скопировать в это окно и выполнить.

Мы получим что то вроде:

ALTER TABLE `db_she`.`modx_active_users` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE `db_she`.`modx_categories` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE `db_she`.`modx_documentgroup_names` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
....
....
ALTER TABLE `db_she `.`modx_document_groups` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE `db_she`.`modx_event_log` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE `db_she`.`modx_keyword_xref` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE `db_she`.`modx_manager_log` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

Выделяем этот код - вставляем в окно запросов к БД и нажимаем ОК.

В результате получем для всей Базы данных, параметр сравнения вместо latin1_swedish_ci -->  utf8_general_ci, и это будет выглядеть так:

Кодировка сравнения, после изменения

 

Если не помогло, возможно вам будет полезны ссылка:
Cannot modify header information - headers already sent by

Отзывы (13)


Andrew 02 фев 2016 в 17:33 # Ответить
Спасибо тебе мил человек. Перед этим опробовал три найденых в гугле метода - все фигня. Твой метод сработал на 100%.
Siarzhuk 15 фев 2017 в 11:46 # Ответить
Siarzhuk
Глупый вопрос, но...
Как "Полученный результат..." скопировать? Строки обрезаются.
admin 15 фев 2017 в 22:55 # Ответить
Там есть поле в интерфейсе phpMyAdmin по сколько символов отображать в строке или типа того, проблемы быть не должно. У меня щас под рукой нету "искревленной" базы что бы точно сказать

ОтменитьДобавить комментарий

La composante principale de Levitra est Vardenafil. Ce médicament est utilisé pour traiter le dysfonction érectile (l'impuissance) chez les hommes et pour le traitement d'hypertension artérielle pulmonaire. Levitra affecte la réponse à la stimulation sexuelle et améliore l'érection https://pharmacie-hommes.fr. Le médicament agit pendant 36 heures.