Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Можно ли изменить DEFAULT CHARSET?
 
 автор: Mpak   (26.10.2006 в 06:27)   письмо автору
 
 

Пример:
Когда просматриваю таблицу в уже созданной БД, (на команду show create table forum) MySQL пишет в самом конце:

DEFAULT CHARSET=latin1


А мне нужно cp1251
я конечно могу при создании таблицы происать, что эта таблица должна иметь кодировку cp1251, но это же надо прописывать при создании каждой таблицы одно и тоже....

Можно ли изменить DEFAULT CHARSET, что он сразу создавал таблицы в кодировке cp1251?

   
 
 автор: Trianon   (26.10.2006 в 09:13)   письмо автору
 
   для: Mpak   (26.10.2006 в 06:27)
 


ALTER DATABASE `ИмяБД` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci

   
 
 автор: elenaki   (26.10.2006 в 10:26)   письмо автору
 
   для: Trianon   (26.10.2006 в 09:13)
 

а можно таким же образом сделать ALTER TABLE? т.е. одну или две таблицы только поменять,
а не всю базу? не хочется заново создавать таблицы, а потом переносить в них данные...

   
 
 автор: Trianon   (26.10.2006 в 11:33)   письмо автору
 
   для: elenaki   (26.10.2006 в 10:26)
 


ALTER TABLE tab DEFAULT CHARSET 'cp1251'

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

   
 
 автор: elenaki   (26.10.2006 в 12:03)   письмо автору
 
   для: Trianon   (26.10.2006 в 11:33)
 

у меня шеф с ума сходит. достал меня с сортировкой по алфавиту. таблица с фирмами была
с CHARSET=latin1 (у меня на локальном нет greek, поэтому создаю с default). теперь я, наконец,
с помощью этого форума и собственных опытов на Удобном_Хостинге научилась создавать
таблицы с нужной кодировкой и даже выводить из них не ???, а нормально читаемые слова.
теперь у меня есть две одинаковых таблицы - одна с данными, но в старой кодировке latin1,
вторая чистая, но с нужной кодировкой greek. теперь шеф, который сначала было согласился,
что пора начинать новую базу (та очень старая, 2000 года) и всю регистрацию заносить в
новую таблицу, требует, чтоб я перенесла ВСЕ фирмы из старой таблицы (где они в latin1) в
новую, которая greek! боюсь, что перенесутся они в таком виде "???". к тому же надо писать
специальный скрипт, потому что просто copy+paste не пройдет, очень много записей.

   
 
 автор: Trianon   (26.10.2006 в 12:06)   письмо автору
 
   для: elenaki   (26.10.2006 в 12:03)
 

Эта база, которую надо переделывать - с нее можно дамп снять?

   
 
 автор: elenaki   (26.10.2006 в 12:15)   письмо автору
 
   для: Trianon   (26.10.2006 в 12:06)
 

можно. переделывать надо не всю базу, а одну таблицу (или 3, если еще и районы взять)

   
 
 автор: Trianon   (26.10.2006 в 12:27)   письмо автору
 
   для: elenaki   (26.10.2006 в 12:15)
 

Тогда я бы сперва снял дамп. И попробовал бы всю эту процедуру выполнить на локальной машине. И убедившись, что всё Ок и никакие данные не потеряны, выбрал бы один из вариантов:
1. Выполнить то же самое на сервере.
2. Снять дамп с локальной машины и залить его на сервер.

В зависимости от размера базы и возможностей исполнения дампа на сервере.

   
 
 автор: Trianon   (26.10.2006 в 12:28)   письмо автору
 
   для: elenaki   (26.10.2006 в 12:15)
 

три так три, дамп-то необязательно весь снимать.

   
 
 автор: elenaki   (26.10.2006 в 13:01)   письмо автору
 
   для: Trianon   (26.10.2006 в 12:28)
 

локальный отпадает. там нет ни greek ни cp1253. все надо делать на сервере. я пока другим
занимаюсь, но попробую обязательно (не для шефа, самой интересно).

   
 
 автор: elenaki   (26.10.2006 в 15:05)   письмо автору
 
   для: elenaki   (26.10.2006 в 13:01)
 

ничего не вышло. все греческие слова стали вопросительными знаками :(

   
 
 автор: Trianon   (26.10.2006 в 15:33)   письмо автору
 
   для: elenaki   (26.10.2006 в 15:05)
 

А в дампе они нормально выглядят?
Кстати, какая версия у MySQL-сервера?

   
 
 автор: elenaki   (26.10.2006 в 15:51)   письмо автору
 
   для: Trianon   (26.10.2006 в 15:33)
 

ну да. теперь начинаем спрашивать про версии... :( кстати, а что такое MySQL-server? это база?

   
 
 автор: Trianon   (26.10.2006 в 16:11)   письмо автору
 
   для: elenaki   (26.10.2006 в 15:51)
 

>ну да. теперь начинаем спрашивать про версии... :(

Вообще-то первый мой вопрос был про дамп.
Потому, что если нормального дампа, на который можно откатиться, нету, то применять команды вроде ALTER - довольно дорогое развлечение.

В любом случае, делать это на боевой БД(таблице), не проверив на тестовой , не предлагал.

>кстати, а что такое MySQL-server? это база?
Сервер - это сервер. На нем может быть много разных баз.
Я имел в виду это то, что выдает запрос

SELECT VERSION()

   
 
 автор: cheops   (26.10.2006 в 16:12)   письмо автору
 
   для: elenaki   (26.10.2006 в 15:51)
 

Да, это процесс на сервере, обслуживающий базы данных - именно с ним устанавливают соединения клиенты MySQL (консольный mysql, PHP, Web-приложения вроде phpMyAdmin).

   
 
 автор: elenaki   (26.10.2006 в 16:18)   письмо автору
 
   для: cheops   (26.10.2006 в 16:12)
 

4.1.20

да ладно, я не обижаюсь. у меня есть эта таблица и на локальном. просто заморочно ее теперь
обратно на сервер заливать. там не будет некоторых последних изменений, которые я on-line
делала. а вообще мне эта таблица не нужна, старье. это шефу жалко ее выкинуть. он у нас как
Плюшкин тащит всякую гадость, а потом удалять не дает. а если очень настойчиво просить,
то разрешит, но перед удалением скажет - а сделай-ка копию с того, что ты удаляешь... :O

   
 
 автор: Trianon   (26.10.2006 в 16:37)   письмо автору
 
   для: elenaki   (26.10.2006 в 16:18)
 

да.. некрасиво получилось... сочувствую...

Вообще-то я удивлен. Я Вас считал (и собственно, продолжаю считать - один случай ни о чем не говорит) эдаким зубром веб-программирования с весьма широкими знаниями и навыками и громадным опытом, всяко перекрывающим мой даже не в разы, а на порядки.
И те строки насчет дампа, неоходимости локального теста, писал просто по привычке, в основном для новичков, попади те в аналогичную ситуацию, но никак не для Вас.

Что я могу сказать.... если и вправду таблица не уникальная, то поздравляю. Вы приобрели крайне полезный опыт ценой невысокой, но достаточной для закрепления оного в памяти.

   
 
 автор: elenaki   (26.10.2006 в 16:58)   письмо автору
 
   для: Trianon   (26.10.2006 в 16:37)
 

как мне сказал один клиент - ты все хорошо делаешь, когда не кладешь в миксер (типа когда не
торопишься). ну поторопилась. когда стоят над душой и торопят, так всегда и получается. :)

   
 
 автор: Trianon   (26.10.2006 в 12:15)   письмо автору
 
   для: elenaki   (26.10.2006 в 12:03)
 

В latin1 , если я правильно понимаю, греческого алфавита нет.
Поэтому, если у Вас стоит latin1, это означает лишь, что данные лежат в какой-то однобайтовой кодировке, соответствующей по порядку символов второй половине расширенного latin-набора. Так вот - какая она? cp1253?

Обычно, если необходимо поставить корректную кодировку такой таблице, то сперва нужным столбцам назначается кодировка binary, а следующим шагом уже ставится правильная (напр. cp1253) .

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

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования