![]() |
Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 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