Не полінюсь витратити пів часа свого робочого часу, щоб помогти вам мої читачі з проблемою кодування таблиць баз данних, та їх полей.
робив оце на джумлі сайт-каталог і один з компонентів замість того, щоб бути з utf8_general_ci кодуванням, яке використовує joomla на даний час, компонент zoo в базі данних всі таблиці зробив в latin1_swedish_ci кодуванні. І це стало проблемою бо в адмінці і на сайті, все що вводиш в базу данних стає крякозябрями.
І так правим:
Першим ділом заходим в наш phpmyadmin (чи чим ви там користується для роботи з вашою базою данних, можливо взагалі консоллю :) )
Якщо у вас одна таблиця то можна просто за допомогою наступного коду
ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name [COLLATE collation_name]
Але якщо у вас 50-100 таблиць, а вних по 10-30 полів? Не панікуєм, вихід є!
Робимо наступний запит до БД.
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
на вашу, а також якщо вам потрібно змінити інші кодування, тоді замініть також utf8
і utf8_general_ci
на відповідні вашим.
Після виконання даного скрипта отримаєм повний список всіх таблиць з нашої бд db_name
з готовим кодом для виконання для зміни кодування в наших таблицях та полях бази данних.
Ось декілька строк для зразку (з 43шт, які мені вивело)
ALTER TABLE `mydb`.`jos_assets` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; ALTER TABLE `mydb`.`jos_banners` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; ALTER TABLE `mydb`.`jos_banner_clients` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; ALTER TABLE `mydb`.`jos_banner_tracks` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; ALTER TABLE `mydb`.`jos_categories` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; ALTER TABLE `mydb`.`jos_contact_details` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; ALTER TABLE `mydb`.`jos_content_frontpage` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
Берем код, який нам любязно підготовив наш скріпт і вставляєм його до виконання.
Отримаємо щось на зразок такого звіту
ALTER TABLE `mydb`.`jos_assets` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;# Затронуто строк: 177.
Розробка сайту, підтримка та хостинг. Студія дизайну HDesign.rv.ua