Web-Gate
где заказать сайт +38 (093) 209 60 74 где заказать сайт +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

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

Как обойти Adblock


26.03.2014
Столкнулся с проблемой - собственная реклама сайта, т.е. баннера которые ведут на внутренние разделы клиентского сайта были заблокированы браузерной надстройкой Adblock
Главная - Блог - Как поменять кодировку всех таблиц в MySQL базе
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

Отзывы (12)


alex 19 авг 2013 в 21:00 # Ответить
Спасибо!
Помогло! Благодарен за эту статью)
admin 20 авг 2013 в 00:48 # Ответить
Пожалуйста!
Алена 03 сен 2013 в 21:21 # Ответить
Спасибо огромное!
Отличный совет! Спасибо большое!
Очень дельная и ценная информация!
admin 03 сен 2013 в 21:30 # Ответить
Рад что помог!
Юрий 23 окт 2013 в 14:18 # Ответить
Большое спасибо. Помогло...
admin 23 окт 2013 в 18:25 # Ответить
Пожалуйста! Буду благодарен вам за лайки!!!
Sergey 01 окт 2014 в 20:35 # Ответить
Огромное спасибо, помогло !!!! ;))
Иван 05 янв 2016 в 08:56 # Ответить
Редко пишу отзывы, но тут оно того стоит, спасибо за помощь:) Пропали вопросики, ошибки, и в админке появилась возможность искать материалы на русском языке
admin 05 янв 2016 в 09:06 # Ответить
Спасибо! Рад что пригодилось

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

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.