Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
База по ошибке была создана в utf8_BIN(представление в бинарных числах). Мне надо перегнать всю базу в utf8_unicode_ci(хостинг рубит на пробелы все представления в числах там где текстовые поля)
Работают отдельные комманды типа ALTER TABLE 'sss' DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci, а хочу автоматом так перегнать всю базу включая все поля в таблицах созданные в BIN сравнении на utf-8_unicode_ci сравнение.
например уже
ALTER TABLE * DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci не работает. Где ошибка?
Отредактированно q3000 (03.11.2009 15:13:08)
Неактивен
В звездочке, разумеется. Нет команды «ALTER TABLE *». Можете написать
какой-то простой сценарий, который сделает это за Вас:
mysql -NBe "show tables" dbname | xargs -i@ mysql -e "alter table @ convert to charset utf8" dbname
Неактивен
paulus написал:
В звездочке, разумеется. Нет команды «ALTER TABLE *». Можете написать
какой-то простой сценарий, который сделает это за Вас:
mysql -NBe "show tables" dbname | xargs -i@ mysql -e "alter table @ convert to charset utf8" dbname
на чем этот сценарий??
я написал на php, но он не работает
<? //-----------подсоеденяем базу $db=mysql_connect("localhost","dbase1","pass"); mysql_select_db("dbase1",$db); if (!$db) echo "database is down"; //-------------делаем выборку таблиц $res1=mysql_query("SELECT * FROM dbase1"); // ----------в цикле меняем нужную кодировку с подборкой while ($myrow=mysql_fetch_array($res1)); { $res2=mysql_query("ALTER TABLE '$myrow['TABLE']' DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci") } ?>
Так возможно?? и почему нет выборки?
Отредактированно q3000 (03.11.2009 17:49:05)
Неактивен
Проблему удалось решить с помощью Sypex Dumper Lite 1.0.8..
с выставленными внутри
Код:
define('CHARSET', 'auto');
define('RESTORE_CHARSET', 'forced->utf8_unicode_ci');
Перегоняем в дамп, а потом обратно
Неактивен
Потому что $res1=mysql_query("SELECT * FROM dbase1"); означает выбрать все поля из таблицы `dbase1`. И вероятнее всего на этом этапе у вас происходит ошибка - такой таблицы не существует.
Рекомендую делать вывод ошибок
$res1=mysql_query("SELECT * FROM dbase1") or die(mysql_error());
Чтобы получить имена таблиц:
1. SELECT table_name FROM information_schema.`TABLES` T where table_schema='dbase1'; -- действует с пятой версии
или
2. show tables from dbase1;
Неактивен
Страниц: 1