![]() |
#1
|
|||
|
|||
![]()
Victor Sudakov написал(а) к All в Sep 17 10:51:06 по местному времени:
Dear All, "less /var/db/mysql/ask1/wpcomments.MYD" показывает внутри таблицы вполне читаемый текст в UTF-8. А вот сдампить эту базу корректно никак не могу. Пробовал: mysqldump --default-character-set=utf8 -r /var/tmp/test.sql ask1 wpcomments mysqldump --default-character-set=latin1 -r /var/tmp/test.sql ask1 wpcomments внутри /var/tmp/test.sql получается бнопня. Правда разная бнопня в зависимости от значения ключа default-character-set. Вот это и аналогичные статье уже прочитал: https://makandracards.com/makandra/5...utf-8-safe-way ничего не помогает. Посоветуйте что-нибудь умное pls. mysql-server-4.1.25, надо с него перетащить данные на более новый. Victor Sudakov, VAS4-RIPE, VAS47-RIPN --- GoldED+/BSD 1.1.5-b20160322-b20160322 |
#2
|
|||
|
|||
![]()
Sergey Anohin написал(а) к Victor Sudakov в Sep 17 08:14:32 по местному времени:
Нello, Victor! VS> "less /var/db/mysql/ask1/wpcomments.MYD" показывает внутри таблицы вполне читаемый текст в UTF-8. А вот сдампить эту базу корректно никак не могу. Пробовал: VS> mysqldump --default-character-set=utf8 -r /var/tmp/test.sql ask1 wpcomments VS> mysqldump --default-character-set=latin1 -r /var/tmp/test.sql ask_1 VS> внутри /var/tmp/test.sql получается бнопня. Правда разная бнопня в зависимости от значения ключа default-character- VS> Вот это и аналогичные статье уже прочитал: https://makandracards.com/makandra/5...utf-8-safe-way VS> ничего не помогает. VS> Посоветуйте что-нибудь умное VS> mysql-server-4.1.25, надо с него перетащить данные на более новый. VS> Victor Sudakov, VAS4-RIPE, VAS47-RIPN А локаль кодировка? Наверно что нить надо мудрить cat dump.sql | iconv и в таком плане С наилучшими пожеланиями, Sergey Anohin. --- wfido |
#3
|
|||
|
|||
![]()
Sergey Anohin написал(а) к Victor Sudakov в Sep 17 08:14:45 по местному времени:
Нello, Victor! VS> "less /var/db/mysql/ask1/wpcomments.MYD" показывает внутри таблицы вполне читаемый текст в UTF-8. А вот сдампить эту базу корректно никак не могу. Пробовал: VS> mysqldump --default-character-set=utf8 -r /var/tmp/test.sql ask1 wpcomments VS> mysqldump --default-character-set=latin1 -r /var/tmp/test.sql ask_1 VS> внутри /var/tmp/test.sql получается бнопня. Правда разная бнопня в зависимости от значения ключа default-character- VS> Вот это и аналогичные статье уже прочитал: https://makandracards.com/makandra/5...utf-8-safe-way VS> ничего не помогает. VS> Посоветуйте что-нибудь умное VS> mysql-server-4.1.25, надо с него перетащить данные на более новый. VS> Victor Sudakov, VAS4-RIPE, VAS47-RIPN А локаль кодировка? Наверно что нить надо мудрить cat dump.sql | iconv и в таком плане С наилучшими пожеланиями, Sergey Anohin. --- wfido |
#4
|
|||
|
|||
![]()
Victor Sudakov написал(а) к Sergey Anohin в Sep 17 13:08:04 по местному времени:
Dear Sergey, 07 Sep 17 08:14, you wrote to me: VS>> "less /var/db/mysql/ask1/wpcomments.MYD" показывает внутри VS>> таблицы вполне читаемый текст в UTF-8. А вот сдампить эту базу VS>> корректно никак не могу. Пробовал: mysqldump VS>> --default-character-set=utf8 -r /var/tmp/test.sql ask_1 VS>> wp_comments mysqldump --default-character-set=latin1 -r VS>> /var/tmp/test.sql ask_1 внутри /var/tmp/test.sql получается VS>> бнопня. Правда разная бнопня в зависимости от значения ключа VS>> default-character- Вот это и аналогичные статье уже прочитал: VS>> https://makandracards.com/makandra/5...importing-from VS>> -to-mysql-in-an-utf-8-safe-way ничего не помогает. Посоветуйте VS>> что-нибудь умное mysql-server-4.1.25, надо с него перетащить VS>> данные на более новый. SA> А локаль кодировка? Как я уже отметил выше, под этой самой локалью ru_RU.UTF-8, команда "less /var/db/mysql/ask1/wpcomments.MYD" показывает внутри таблицы вполне читаемый текст в UTF-8. Куда еще мудрить? SA> Наверно что нить надо мудрить cat dump.sql | iconv SA> и в таком плане dump.sql содержит не_ _то_ _же_ _самое, что MYD файл. iconv вообще не понимает содержимое (cannot convert), мне не удалось подобрать исходную кодировку, чтобы iconv не ругался. Поэтому задача-минимум - получить то_ _же_ _самое, что физически лежит в базе. Victor Sudakov, VAS4-RIPE, VAS47-RIPN --- GoldED+/BSD 1.1.5-b20160322-b20160322 |
#5
|
|||
|
|||
![]()
Victor Sudakov написал(а) к All в Sep 17 14:06:42 по местному времени:
Dear Victor, 07 Sep 17 08:14, Sergey Anohin wrote to me: SA> А локаль кодировка? От локали явно никак не зависит: $ env LANG=C mysqldump --default-character-set=latin1 -r /var/tmp/test1.sql ask1 wpcomments ; md5 /var/tmp/test1.sql MD5 (/var/tmp/test1.sql) = 25e9fc61030fcabca200cb693baf67f2 $ env LANG=ruRU.UTF-8 mysqldump --default-character-set=latin1 -r /var/tmp/test1.sql ask_1 wpcomments ; md5 /var/tmp/test1.sql MD5 (/var/tmp/test1.sql) = 25e9fc61030fcabca200cb693baf67f2 $ env LANG=ruRU.CP1251 mysqldump --default-character-set=latin1 -r /var/tmp/test1.sql ask_1 wpcomments ; md5 /var/tmp/test1.sql MD5 (/var/tmp/test1.sql) = 25e9fc61030fcabca200cb693baf67f2 Victor Sudakov, VAS4-RIPE, VAS47-RIPN --- GoldED+/BSD 1.1.5-b20160322-b20160322 |
#6
|
|||
|
|||
![]()
Eugene Grosbein написал(а) к Victor Sudakov в Sep 17 16:02:17 по местному времени:
07 сент. 2017, четверг, в 09:51 NOVT, Victor Sudakov написал(а): VS> "less /var/db/mysql/ask1/wpcomments.MYD" показывает внутри таблицы вполне VS> читаемый текст в UTF-8. А вот сдампить эту базу корректно никак не могу. VS> Пробовал: VS> mysqldump --default-character-set=utf8 -r /var/tmp/test.sql ask1 wpcomments VS> mysqldump --default-character-set=latin1 -r /var/tmp/test.sql ask1 wpcomments VS> внутри /var/tmp/test.sql получается бнопня. Правда разная бнопня в зависимости VS> от значения ключа default-character-set. Это обычное дело, когда приложения создают базы данных/таблицы, не специфицируя кодировку и наследуя системный дефолт, который у тебя может быть совсем не тот, что был у разработчика приложения. В итоге данные лежат фактически в одной кодировке, а MySQL думает, что в другой. Вот это "думает" можно достаточно легко увидеть, как и системные дефолты: mysql> show variables like 'char%'; mysql> show variables like 'collation%'; Их легко поменять в my.cnf, но это не повлияет на "уже кривые" таблицы. Для их починки гарантированно работает такой путь: 1) При помощи show table status \G и/или show create table/mysqldump выяснить, что думает MySQL о кодировке данных. Затем снова сдампить данные при помощи: mysqldump --create-options --skip-set-charset --default-character-set=latin1, где вместо latin1 подставить кодировку, которая приписана к данным в таблицах - таким образом, получим дамп без перекодированных данных (бнопни), но с неправильной кодировкой в CREATE TABLE, которую затем меняем тупо sed-ом в дампе. И не забыв поправить в my.cnf дефолты сервера, заливаем дамп обратно. Eugene --- slrn/1.0.2 (FreeBSD) |
#7
|
|||
|
|||
![]()
Andrey Ostanovsky написал(а) к Victor Sudakov в Sep 17 15:45:58 по местному времени:
Нello Victor! 07 Sep 17 13:08, you wrote to Sergey Anohin: VS> Как я уже отметил выше, под этой самой локалью ru_RU.UTF-8, команда VS> "less /var/db/mysql/ask1/wpcomments.MYD" показывает внутри таблицы VS> вполне читаемый текст в UTF-8. VS> Куда еще мудрить? А требуется именно "мудрить" или проще будет выгрузить без перекодировки "как есть"? Andrey --- GoldED+/BSD 1.1.5-b20070503 |
#8
|
|||
|
|||
![]()
Victor Sudakov написал(а) к Andrey Ostanovsky в Sep 17 23:31:32 по местному времени:
Dear Andrey, 07 Sep 17 15:45, you wrote to me: VS>> Как я уже отметил выше, под этой самой локалью ru_RU.UTF-8, VS>> команда "less /var/db/mysql/ask1/wpcomments.MYD" показывает VS>> внутри таблицы вполне читаемый текст в UTF-8. Куда еще мудрить? AO> А требуется именно "мудрить" или проще будет выгрузить без AO> перекодировки "как есть"? Вот если знаешь простой способ выгрузить без перекодировки "как есть", то рассказывай. Victor Sudakov, VAS4-RIPE, VAS47-RIPN --- GoldED+/BSD 1.1.5-b20160322-b20160322 |
#9
|
|||
|
|||
![]()
Victor Sudakov написал(а) к Eugene Grosbein в Sep 17 09:34:22 по местному времени:
Dear Eugene, 07 Sep 17 16:02, you wrote to me: EG> Это обычное дело, когда приложения создают базы данных/таблицы, EG> не специфицируя кодировку и наследуя системный дефолт, который EG> у тебя может быть совсем не тот, что был у разработчика приложения. Странно, что разработчику пофиг, что это может привести к проблемам в приложении, из-за неправильного collation. EG> В итоге данные лежат фактически в одной кодировке, а MySQL думает, EG> что в другой. Так и есть в моем случае. Просто у меня было мнение (как объяснили на канале #freebsd, ошибочное), что mysqldump должен сливать сырые данные, как они есть в базе. А оказывается он смотрит на клиентскую кодировку и пытается данные перекодировать из кодировки, указанной для таблицы, в кодировку клиента (из .my.cnf или аналогичного места). Это был ключевой момент в понимании, что же собственно происходит. EG> Вот это "думает" можно достаточно легко увидеть, EG> как и системные дефолты: mysql>> show variables like 'char%'; mysql>> show variables like 'collation%'; EG> Их легко поменять в my.cnf, но это не повлияет на "уже кривые" EG> таблицы. Для их починки гарантированно работает такой путь: EG> 1) При помощи show table status \G и/или show create table/mysqldump EG> выяснить, что думает MySQL о кодировке данных. Затем снова сдампить EG> данные при помощи: EG> mysqldump --create-options --skip-set-charset EG> --default-character-set=latin1, где вместо latin1 подставить EG> кодировку, которая приписана к данным в таблицах - таким образом, EG> получим дамп без перекодированных данных (бнопни), но с неправильной EG> кодировкой в CREATE TABLE, которую затем меняем тупо sed-ом в дампе. Так и сделал в конечном итоге. IMНO более правильно было бы наличие у mysqldump ключа "ничего не перекодировать, слить как есть", но такого ключа не нашлось. С помощью --default-character-set можно примерно этого добиться, но если не дай Бог в разных таблицах/базах оказались разные "SET CНARSET", то получается геморрой. Victor Sudakov, VAS4-RIPE, VAS47-RIPN --- GoldED+/BSD 1.1.5-b20160322-b20160322 |
#10
|
|||
|
|||
![]()
Victor Sudakov написал(а) к Eugene Grosbein в Sep 17 15:11:02 по местному времени:
Dear Eugene, 07 Sep 17 16:02, you wrote to me: mysql>> show variables like 'char%'; mysql>> show variables like 'collation%'; EG> Их легко поменять в my.cnf, А ты не знаешь, указание на кодировку в my.cnf в секции [client] влияет как-то на PНP-клиенты: databases/php56-{mysql,mysqli,pdo_mysql}? И если да, то в какой конфиг они смотрят? Victor Sudakov, VAS4-RIPE, VAS47-RIPN --- GoldED+/BSD 1.1.5-b20160322-b20160322 |