metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2010-04-13 11:08 am

От жеж вуду

Решил разобраться с внутренним устройством баг-трекера на предмет его миграции с "автоматически инсталлированного под виндой" на "поставленный вручную на дебиане".
Обнаружил, что автоматический инсталлятор под виндой создал базу в mysql с кодировкой latin1, а рубирельсовое приложение при этом работает в кодировке utf8. Дамп базы вроде в utf8 получается, если поставить mysqldump кодировку latin1, но подгрузить этот дамп в utf8 базу у меня не выходит.

PS: фак мой мозг. Поставил для базы данных с default character set utf8 в конфиге рельсов encoding: latin1 - кодировка исправилась. Хер знает, что они там делают.

PPS: замена всех latin1 на utf8 в дампе, установка --default-character-set=utf8 при импорте таки помогла - новая база стала в правильной кодировке.

[identity profile] kurilka.livejournal.com 2010-04-13 11:19 am (UTC)(link)
в мускульном дампе по-моему там в первых строках идёт выставление кодировки и оно у тебя в латин1 должно выставлять, что, сам понимаешь, не в тему.

[identity profile] metaclass.livejournal.com 2010-04-13 11:23 am (UTC)(link)
Да, там не только в первых строках latin1 - оно там по всему файлу. Буду сейчас по частям фиксить и смотреть что получается.

[identity profile] kurilka.livejournal.com 2010-04-13 11:28 am (UTC)(link)
ты не понимаешь меня - там в первых строках директива мускулу для выставления кодировки.

[identity profile] metaclass.livejournal.com 2010-04-13 11:32 am (UTC)(link)
это /*!40101 SET NAMES utf8 */;

я ее поменял в последнюю очередь, но кроме этого, еще указал в опциях mysql --default-character-set=utf8, после чего все заработало.

[identity profile] black-angel-by.livejournal.com 2010-04-13 01:49 pm (UTC)(link)
- кодировка в котрой хранятся данные
- кодировка, в которой отдаётся аппликухе (SET NAMES)
- и кодировка в которой отдаёт апликуха.

Потёряться тут конечно можно, но лучше по возможности держать всё в одной кодировке :)

Гм, как то использовал команду для конвертации таблицы из одной кодировки в другую. ИМХО более правильный способ.

[identity profile] metaclass.livejournal.com 2010-04-13 01:58 pm (UTC)(link)
Я все равно массово базы мигрирую тут, так что надо уже и кодировки заодно пофиксить.

[identity profile] kurilka.livejournal.com 2010-04-13 11:20 am (UTC)(link)
а ваще - мочить всех, кто утф не юзает :)

[identity profile] theiced.livejournal.com 2010-04-13 11:46 am (UTC)(link)
мочить надо всех кто юзает говномусикль.

[identity profile] kurilka.livejournal.com 2010-04-13 12:07 pm (UTC)(link)
а, ну да, и этих тоже :)

[identity profile] inhate.livejournal.com 2010-04-13 01:51 pm (UTC)(link)
да-да, в посгресе у всех есть только один вариант заданый при инициализации кластера. Если надо друго сочетание кодировок и коллешенов - надо разные кластеры делать. В мумсике это намного удобнее сделано.

[identity profile] max-posedon.livejournal.com 2010-04-13 03:50 pm (UTC)(link)
Наглая ложь, от человека который видимо не читает документацию.

Для тех кто всё-таки читает:

http://www.postgresql.org/docs/8.4/interactive/sql-createdatabase.html

lc_collate
Collation order (LC_COLLATE) to use in the new database. This affects the sort order applied to strings, e.g. in queries with ORDER BY, as well as the order used in indexes on text columns. The default is to use the collation order of the template database. See below for additional restrictions.

lc_ctype
Character classification (LC_CTYPE) to use in the new database. This affects the categorization of characters, e.g. lower, upper and digit. The default is to use the character classification of the template database. See below for additional restrictions.

[identity profile] metaclass.livejournal.com 2010-04-13 04:18 pm (UTC)(link)
и появилось это только в 8.4 вроде :)

[identity profile] max-posedon.livejournal.com 2010-04-13 04:23 pm (UTC)(link)
Да, а сам 8.4 зарелизился более полу-года назад.

[identity profile] metaclass.livejournal.com 2010-04-13 06:28 pm (UTC)(link)
Я предполагаю, что полгода это недостаточный срок, чтобы все кинулись на него продакшен переводить.
Я обычно ранее чем через год-два на новые версии не хожу, во избежание - пусть другие сначала все баги отловят, пару багфикс-релизов сделают, а потом уж и я - на готовое:)

[identity profile] samurai-within.livejournal.com 2010-04-13 11:40 am (UTC)(link)
"mysql это фалоимитатор с гвоздями" (с) не мой

[identity profile] max-posedon.livejournal.com 2010-04-13 01:50 pm (UTC)(link)
А вас же предупреждали...

[identity profile] metaclass.livejournal.com 2010-04-13 01:58 pm (UTC)(link)
Кто предупреждал о чем? :)

[identity profile] theiced.livejournal.com 2010-04-13 03:38 pm (UTC)(link)
я. много раз :]

[identity profile] max-posedon.livejournal.com 2010-04-13 03:42 pm (UTC)(link)
об mysql-е, и utf-8 и прочим

и в это прочее, между прочим входит то, что у вас таблицы скорее всего в myisam

[identity profile] metaclass.livejournal.com 2010-04-13 04:15 pm (UTC)(link)
таблицы в InnoDB

[identity profile] metaclass.livejournal.com 2010-04-13 04:17 pm (UTC)(link)
И таки насчет mysql меня никто не предупреждал, это вообще стороннее приложение, в кои я без особой надобности стараюсь не лезть - у меня и своей работы достаточно.

[identity profile] bigfrogg.livejournal.com 2010-04-13 04:19 pm (UTC)(link)
Один из корней мирового зла - использование не utf8 кодировки где-либо.

[identity profile] metaclass.livejournal.com 2010-04-13 06:29 pm (UTC)(link)
С этой кодировкой тоже не все хорошо. Она ж для символов <127 не отличается от ASCII, из-за чего долбаные американцы вполне могут считать, что "у них все работает", даже если там все остальное поломано.

[identity profile] theiced.livejournal.com 2010-04-14 12:55 am (UTC)(link)
ооооо
да да да
сколько раз натыкался на такую хуйню ;]

[identity profile] nivanych.livejournal.com 2010-04-13 07:15 pm (UTC)(link)
Не надо этот мускль. Плохой он.
Как минимум, один солидарный со мной человек тут есть ;-)

[identity profile] nealar.livejournal.com 2010-04-13 07:20 pm (UTC)(link)
Чем именно плохой?

[identity profile] theiced.livejournal.com 2010-04-14 12:55 am (UTC)(link)
тем что он говно, например.

[identity profile] nivanych.livejournal.com 2010-04-14 06:36 am (UTC)(link)
Мне неохота вдаваться в холивары
по поводу того, что я делал что-то не так, но
намучился я с ним, в своё время, весьмаа прилично.
А вот PostgreSQL, наоборот, принёс мне
большую радость и облегчение.

[identity profile] nealar.livejournal.com 2010-04-14 08:33 am (UTC)(link)
Так всё правильно. Под каждую задачу свой молоток.

[identity profile] nivanych.livejournal.com 2010-04-14 10:27 am (UTC)(link)
Я бы сказал, что мускль, по лоровской терминологии, "ненужен".
Сейчас уже практически все области его применения покрывает PostgreSQL.
Остальное покрывает sqlite.
Вообще, эта парочка, sqlite и PostgreSQL, покрывает оочень много применений SQL'я "вообще", за 2-мя исключениями.

Первое исключение касается сверх-больших-сложных баз, с которыми я не имел дел, и не имею права утверждать, что PostgreSQL тут годится. Хотя, наблюдения показывают, что вполне годится, и даже от оракла отстаёт уже не очень сильно.

Второе исключение касается сверх-навороченного OLAP, тут есть специально приспособленные под это конкурренты.

[identity profile] nealar.livejournal.com 2010-04-14 10:39 am (UTC)(link)
У мускуля есть одно достоинство - простота установки из коробки.
И вот такая вот штука: все мои задачи с базами - это антихайлоад. То есть, по производительности мускуль, постгре и оракл буду на них тупо равны. А скулайт - нет, потому что придётся делать дополнительные телодвижения для доступа нескольких процессов к одной базе.
На тех, кто делает на мускуле сверх-большие-сложные базы и сверх-навороченное OLAP, я хотел бы посмотреть. Чё-то мне не кажется, что это разумный выбор.

[identity profile] nivanych.livejournal.com 2010-04-14 10:47 am (UTC)(link)
А разве PostgreSQL сложно ставится??...........
Как под виндовсом -- проще некуда,
так и под дженту -- очень просто.
Под дебианом не пробовал очень давно,
но не думаю, что заметно сложнее.

[identity profile] metaclass.livejournal.com 2010-04-14 11:06 am (UTC)(link)
mysql и postgresql идентично вуду-образно ставятся. Firebird чуть проще.

[identity profile] nealar.livejournal.com 2010-04-14 11:51 am (UTC)(link)
В mysql после make install надо сделать одну операцию: задать привелегии хотя бы для одного пользователя. Дальше можно нормально использовать. Раньше, кстати, ещё какое-то вуду требовалось, которое аффтары, наконец-то, догадались сунуть в makefile.

[identity profile] metaclass.livejournal.com 2010-04-14 11:56 am (UTC)(link)
А разве сейчас положено make install ставить? Вроде ж корректный вуду-ритуал - ставить менеджером пакетов.

[identity profile] nealar.livejournal.com 2010-04-16 10:21 pm (UTC)(link)
Есть такой менеджер пакетов ;)