|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Denis Shaposhnikov 2:550/5068 21 Oct 2004 14:44:08 To : Slawa Olhovchenkov Subject : Re: mysql & gcc 3.4 -------------------------------------------------------------------------------- >>>>> "Slawa" == Slawa Olhovchenkov >>>>> <Slawa_Olhovchenkov@f500.n5030.z2.fidonet.org> writes: DS> Хуже. Они еще и сделали charset поддержку в полной мере. И старые DS> базы в latin1 стали. И если клиент коннектится с koi8r, то DS> отказываются выполнять любые строковые операции. Сволочи. Hужно DS> alter table и каждое строковое поле сначала в binary и потом DS> назад, с указанием кодировки. Slawa> [обтекая] ась? еще раз в деталях можно? а скриптика никакого Slawa> они не дают для этого? А через backup/restore не проже будет? Значит так. Для того, что бы работали всякие WHERE X = 'Y', где X - это CHAR() или тому подобное, нужно, что бы это самое X было определено с той же кодировкой, с которой подключился запрашивающий это клиент. Если делается апгрейд с 4.0 на 4.1, то mysql все текстовые поля начинает считать определенными в latin1. А клиенты ты идут с koi8r (в моем случае). И все, он обламывает всех с воплями о том, что кодировки не совпадают. http://dev.mysql.com/doc/mysql/en/Charset-upgrading.html Я сделал следующее. Для начала, в секции [client] и [mysqld] конфига, указал "default-charset = latin1". Кажется так, уточни в ссылке выше. После этого все работают будто по старому. Правда, возможно сортировка не будет работать, не проверял. Потом, взял файлик с sql командами для создания базы. Для всех таблиц, где у меня определялись текстовые поля, я создал 'ALTER TABLE X DEFAULT CHARSET = koi8r' и ALTER TABLE MODIFY текстовых полей команды с конвертацией в BINARY, а потом назад в нужный формат. После этого сделал 'ALTER DATABASE X DEFAULT CHARSET koi8r' и скормил сделанный файлик mysql'ю. Т.е. там содержатся такая последовательность: ALTER TABLE X1 DEFAULT CHARSET = koi8r; ALTER TABLE X1 MODIFY A1 BINARY(1), MODIFY A2 BINARY(100), MODIFY A3 BLOB; ALTER TABLE X1 MODIFY A1 CHAR(1), MODIFY A2 CHAR(100), MODIFY A3 TEXT; ... После этого, все такие поля будут в кодировке определенной в DEFAULT CHARSET таблицы. Синтаксис всех этих команд уточни в мануале, за точность не ручаюсь. Hу и клиенты, подключаясь к базе, должны как-то сообщить серверу свою кодировку. С помощью соотв. записи в конфиге или 'SET NAMES koi8r'. -- DSS5-RIPE DSS-RIPN 2:550/5068@fidonet 2:550/5069@fidonet mailto:dsh@vlink.ru http://neva.vlink.ru/~dsh/ --- Gnus/5.1006 (Gnus v5.10.6) XEmacs/21.4 (Security Through Obscurity, berkeley-unix) * Origin: Solar system, Jupiter (2:550/5068@fidonet) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/77467411c556.html, оценка из 5, голосов 10
|