forum.wfido.ru  

Вернуться   forum.wfido.ru > Прочие эхи > RU.UNIX.BSD

Ответ
 
Опции темы Опции просмотра
  #21  
Старый 09.09.2017, 22:00
Anton Gorlov
Guest
 
Сообщений: n/a
По умолчанию mysqldump и кодировка

Anton Gorlov написал(а) к Alex Korchmar в Sep 17 20:44:26 по местному времени:

Привет Alex!

09 сен 17 года (а было тогда 16:12)
Alex Korchmar в своем письме к Victor Sudakov писал:

VS>> а в противном случае (без выставления
VS>> skip-character-set-client-handshake) какая логика?
AK> логика clienhandshake из библиотеки libmysql.so, а она в разных
AK> версиях - диаметрально противоположная.


Кстати пых-пыховый mysqlnd(mysqlind) вообще не юзает libmysql. И что самое интересное *nd драйвер в php ломают чаще и изощрённее, чем просто phpmysql(i).nd

С уважением. Anton aka Stalker

Linux Registered User #386476
[#TEAM:*#] [#Злой СисОп_#] [*Нeavy Metal!*] [*_Усачи]
--- GoldED+/LNX 1.1.5-b20160322
Ответить с цитированием
  #22  
Старый 09.09.2017, 23:00
Eugene Grosbein
Guest
 
Сообщений: n/a
По умолчанию Re: mysqldump и кодировка

Eugene Grosbein написал(а) к Victor Sudakov в Sep 17 01:37:02 по местному времени:

09 сент. 2017, суббота, в 08:17 NOVT, Victor Sudakov написал(а):

VS> Ну может кто другой знает. Вопрос чисто практический: вот отредактирую я для
VS> удобства mysqldump какой-нибудь /usr/local/etc/my.cnf, и у
VS> пользователей дружно поломается кодировка в сайтах, написанных с использованием
VS> php-{mysql,mysqli,pdo_mysql}. Или таки нет?

my.cnf позволяет ограничить настройки конкретным клиентом,
вместо секции [client] сделай секцию [mysqldump] и на php она
не повлияет.

Eugene
--
Господа Действительного Положения Вещей предохраняют себя от голода своим
богатством, от общественного мнения - тайной и анонимностью,
от частной критики - законами против клеветы и тем, что средства связи
находятся в их распоряжении. (Норберт Винер)
--- slrn/1.0.2 (FreeBSD)
Ответить с цитированием
  #23  
Старый 11.09.2017, 10:41
Victor Sudakov
Guest
 
Сообщений: n/a
По умолчанию mysqldump и кодировка

Victor Sudakov написал(а) к Alex Korchmar в Sep 17 11:42:06 по местному времени:

Dear Alex,

09 Sep 17 16:11, Alex Korchmar wrote to me:

VS>> А по-другому спрошу, PНP-клиенты вообще имеют где-то настройки и
VS>> умолчания,
AK> даже если и имеют - они зависят от погоды на марсе, и лучше им эти
AK> идиотские настройки отрывать где только можно.

На тех сайтах, с которыми я сейчас разбираюсь, вебмастер широко использует функцию mysqlsetcharset(), в каком-то таком виде

if ($this->link = @mysql_connect($host, $user, $pass, 1)) {
mysqlsetcharset('cp1251', $this->link);
... }

Видимо она и влияет на charset в handshake. Но какой выбирается charset, если эту функцию не использовать - я нигде даже нагуглить не смог.

Глобально отключить charset в handshake (на уровне mysqld) я не могу, т.к. разные клиенты/сайты ходят с разными кодировками, но SET NAMES не все делают. Им тогда сюрприз случится, если я отключу в сервере.

Victor Sudakov, VAS4-RIPE, VAS47-RIPN
--- GoldED+/BSD 1.1.5-b20160322-b20160322
Ответить с цитированием
  #24  
Старый 12.09.2017, 12:30
Eugene Grosbein
Guest
 
Сообщений: n/a
По умолчанию Re: mysqldump и кодировка

Eugene Grosbein написал(а) к Victor Sudakov в Sep 17 15:03:46 по местному времени:

11 сент. 2017, понедельник, в 10:42 NOVT, Victor Sudakov написал(а):

VS> На тех сайтах, с которыми я сейчас разбираюсь, вебмастер широко использует
VS> функцию mysqlsetcharset(), в каком-то таком виде
VS> if ($this->link = @mysql_connect($host, $user, $pass, 1)) {
VS> mysqlsetcharset('cp1251', $this->link);
VS> ... }
VS> Видимо она и влияет на charset в handshake. Но какой выбирается charset, если
VS> эту функцию не использовать - я нигде даже нагуглить не смог.

https://dev.mysql.com/doc/refman/5.7...acter-set.html

27.8.7.67 mysqlset_characterset()

This function is used to set the default character set for the current
connection. The string csname specifies a valid character set name.
The connection collation becomes the default collation of the character set.
This function works like the SET NAMES statement, but also sets the value
of mysql->charset, and thus affects the character set used
by mysqlreal_escapestring()

https://dev.mysql.com/doc/refman/5.7/en/set-names.html

SET NAMES {'charsetname' [COLLATE 'collationname'] | DEFAULT}

This statement sets the three session system variables charactersetclient,
characterset_connection, and character_setresults to the given character set.
Setting characterset_connection to charsetname also sets
collationconnection to the default collation for charsetname.
See Section 10.1.4, Connection Character Sets and Collations.

Ну и далее https://dev.mysql.com/doc/refman/5.7...onnection.html

Eugene
--- slrn/1.0.2 (FreeBSD)
Ответить с цитированием
  #25  
Старый 12.09.2017, 17:38
Victor Sudakov
Guest
 
Сообщений: n/a
По умолчанию mysqldump и кодировка

Victor Sudakov написал(а) к Eugene Grosbein в Sep 17 20:16:28 по местному времени:

Dear Eugene,

12 Sep 17 15:03, you wrote to me:

VS>> На тех сайтах, с которыми я сейчас разбираюсь, вебмастер широко
VS>> использует функцию mysqlsetcharset(), в каком-то таком виде if
VS>> ($this->link = @mysql_connect($host, $user, $pass, 1)) {
VS>> mysqlsetcharset('cp1251', $this->link);
VS>> ... }
VS>> Видимо она и влияет на charset в handshake. Но какой выбирается
VS>> charset, если эту функцию не использовать - я нигде даже
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
VS>> нагуглить не смог.

EG> https://dev.mysql.com/doc/refman/5.7...acter-set.html

EG> 27.8.7.67 mysqlset_characterset()

EG> This function is used to set the default character set for the current
EG> connection. The string csname specifies a valid character set name.
EG> The connection collation becomes the default collation of the
EG> character set. This function works like the SET NAMES statement, but
EG> also sets the value of mysql->charset, and thus affects the character
EG> set used by mysqlreal_escapestring()

EG> https://dev.mysql.com/doc/refman/5.7/en/set-names.html

EG> SET NAMES {'charsetname' [COLLATE 'collationname'] | DEFAULT}

EG> This statement sets the three session system variables
EG> characterset_client, character_setconnection, and
EG> charactersetresults to the given character set. Setting
EG> characterset_connection to charsetname also
EG> sets collation_connection to the default collation for
EG> charset_name. See Section 10.1.4, Connection Character Sets and
EG> Collations.

В процитированном не говорится, какой и откуда берется charset, если все эти mysqlset_charset() и mysql_set_characterset() не использовать в коде вообще никак.

EG> Ну и далее
EG> https://dev.mysql.com/doc/refman/5.7...onnection.html

Если там далее ответ на мой вопрос всё-таки есть, ты бы лучше ответ и процитировал.

Victor Sudakov, VAS4-RIPE, VAS47-RIPN
--- GoldED+/BSD 1.1.5-b20160322-b20160322
Ответить с цитированием
  #26  
Старый 12.09.2017, 22:35
Eugene Grosbein
Guest
 
Сообщений: n/a
По умолчанию Re: mysqldump и кодировка

Eugene Grosbein написал(а) к Victor Sudakov в Sep 17 00:56:11 по местному времени:

12 сент. 2017, вторник, в 19:16 NOVT, Victor Sudakov написал(а):

VS>>> Видимо она и влияет на charset в handshake. Но какой выбирается
VS>>> charset, если эту функцию не использовать - я нигде даже
VS> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
VS>>> нагуглить не смог.
EG>> https://dev.mysql.com/doc/refman/5.7...acter-set.html
EG>> 27.8.7.67 mysqlset_characterset()
EG>> This function is used to set the default character set for the current
EG>> connection. The string csname specifies a valid character set name.
EG>> The connection collation becomes the default collation of the
EG>> character set. This function works like the SET NAMES statement, but
EG>> also sets the value of mysql->charset, and thus affects the character
EG>> set used by mysqlreal_escapestring()

EG>> https://dev.mysql.com/doc/refman/5.7/en/set-names.html
EG>> SET NAMES {'charsetname' [COLLATE 'collationname'] | DEFAULT}
EG>> This statement sets the three session system variables
EG>> characterset_client, character_setconnection, and
EG>> charactersetresults to the given character set. Setting
EG>> characterset_connection to charsetname also
EG>> sets collation_connection to the default collation for
EG>> charset_name. See Section 10.1.4, Connection Character Sets and
EG>> Collations.

VS> В процитированном не говорится, какой и откуда берется charset, если все эти
VS> mysqlset_charset() и mysql_set_characterset() не использовать в коде вообще
VS> никак.

Ну как же "не говорится". Говорится, что оно is used to set,
то есть установить (читай: сменить дефолт), а конкретнее:
This function works like the SET NAMES statement плюс меняет mysql->charset.
И говорится, что конкретно делает SET NAMES, какие три системные
переменные оно меняет. Дефолты системных переменных и для сервера,
и для клиента задаются в my.cnf, но клиенты типа PНP могут выставлять
клиентский charset в зависимости от собственных конфигов и никаких
предположений на этот счет делать нельзя, а только читать доку по PНP.

Если же ты имеешь в виду серверный дефолт, который используется
если ни в каких конфигах его вообще не прописывать, то как описано
в https://dev.mysql.com/doc/refman/5.7...n-options.html
он определяется на этапе компиляции и если не перепределён, то будет
DEFAULTCНARSET=latin1 и DEFAULT_COLLATION=latin1_swedishci.

Eugene
--
Смотри, но не смей трогать
--- slrn/1.0.2 (FreeBSD)
Ответить с цитированием
  #27  
Старый 13.09.2017, 08:30
Victor Sudakov
Guest
 
Сообщений: n/a
По умолчанию mysqldump и кодировка

Victor Sudakov написал(а) к Eugene Grosbein в Sep 17 10:58:56 по местному времени:

Dear Eugene,

13 Sep 17 00:56, you wrote to me:

VS>>>> Видимо она и влияет на charset в handshake. Но какой выбирается
VS>>>> charset, если эту функцию не использовать - я нигде даже
VS>> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
VS>>>> нагуглить не смог.
EG>>> https://dev.mysql.com/doc/refman/5.7...character-set.
EG>>> html 27.8.7.67 mysqlset_characterset() This function is used
EG>>> to set the default character set for the current connection. The
EG>>> string csname specifies a valid character set name. The
EG>>> connection collation becomes the default collation of the
EG>>> character set. This function works like the SET NAMES statement,
EG>>> but also sets the value of mysql->charset, and thus affects the
EG>>> character set used by mysqlreal_escapestring()

EG>>> https://dev.mysql.com/doc/refman/5.7/en/set-names.html
EG>>> SET NAMES {'charsetname' [COLLATE 'collationname'] | DEFAULT}
EG>>> This statement sets the three session system variables
EG>>> characterset_client, character_setconnection, and
EG>>> charactersetresults to the given character set. Setting
EG>>> characterset_connection to charsetname also
EG>>> sets collation_connection to the default collation for
EG>>> charset_name. See Section 10.1.4, Connection Character Sets and
EG>>> Collations.

VS>> В процитированном не говорится, какой и откуда берется charset,
VS>> если все эти mysqlset_charset() и mysql_set_characterset() не
VS>> использовать в коде вообще никак.

EG> Ну как же "не говорится". Говорится, что оно is used to set,
EG> то есть установить (читай: сменить дефолт), а конкретнее:

Вот мне и интересно, каков тот_ _дефолт, который мы собираемся сменить, применив эту функцию.

[dd]
EG> клиенты типа PНP могут
EG> выставлять клиентский charset в зависимости от собственных конфигов и
EG> никаких предположений на этот счет делать нельзя, а только читать доку
EG> по PНP.

Вот про этот дефолт я и говорю, но в доке по PНP ничего определенного не нашел. Вдруг кто знает.

EG> Если же ты имеешь в виду серверный дефолт,

Нет, я имею в виду PНP-шный. Я бы его задал где-нибудь в php.ini и получил бы большую предсказуемость.

Ну или узнал бы, что PНP-шный клиент смотрит в my.cnf, но это похоже вряд ли.

Victor Sudakov, VAS4-RIPE, VAS47-RIPN
--- GoldED+/BSD 1.1.5-b20160322-b20160322
Ответить с цитированием
  #28  
Старый 13.09.2017, 11:10
Eugene Grosbein
Guest
 
Сообщений: n/a
По умолчанию Re: mysqldump и кодировка

Eugene Grosbein написал(а) к Victor Sudakov в Sep 17 13:35:42 по местному времени:

13 сент. 2017, среда, в 09:58 NOVT, Victor Sudakov написал(а):

VS> Ну или узнал бы, что PНP-шный клиент смотрит в my.cnf, но это похоже вряд ли.

В my.cnf смотрит libmysqlclient.so, в котором реализован сетевой протокол
MySQL и его API и с которым линкуется бинарный код интерпретатора PНP
(включая сюда и его модули).

Eugene
--
Поэты - страшные люди. У них все святое.
--- slrn/1.0.2 (FreeBSD)
Ответить с цитированием
  #29  
Старый 13.09.2017, 13:40
Victor Sudakov
Guest
 
Сообщений: n/a
По умолчанию mysqldump и кодировка

Victor Sudakov написал(а) к Eugene Grosbein в Sep 17 16:17:56 по местному времени:

Dear Eugene,

13 Sep 17 13:35, you wrote to me:

VS>> Ну или узнал бы, что PНP-шный клиент смотрит в my.cnf, но это
VS>> похоже вряд ли.

EG> В my.cnf смотрит libmysqlclient.so, в котором реализован сетевой
EG> протокол MySQL и его API и с которым линкуется бинарный код
EG> интерпретатора PНP (включая сюда и его модули).

О, вот так понятно объяснил, спасибо.

Только что посмотрел, все три php56-mysql, php56-mysqli, php56-pdo_mysql используют libmysqlclient.so.18 по информации "pkg info", и стало быть, надо быть поосторожнее с my.cnf, видимо написанное в секции [client] может на них повлиять.

Но всё это хозяйство собрано с "MYSQLND=off", надо попробовать пересобрать с "MYSQLND=on" и посмотреть, исчезнет ли зависимость.

Victor Sudakov, VAS4-RIPE, VAS47-RIPN
--- GoldED+/BSD 1.1.5-b20160322-b20160322
Ответить с цитированием
  #30  
Старый 13.09.2017, 15:21
Victor Sudakov
Guest
 
Сообщений: n/a
По умолчанию mysqldump и кодировка

Victor Sudakov написал(а) к Eugene Grosbein в Sep 17 18:00:32 по местному времени:

Dear Eugene,

13 Sep 17 16:17, I wrote to you:
VS>>> Ну или узнал бы, что PНP-шный клиент смотрит в my.cnf, но это
VS>>> похоже вряд ли.

EG>> В my.cnf смотрит libmysqlclient.so, в котором реализован сетевой
EG>> протокол MySQL и его API и с которым линкуется бинарный код
EG>> интерпретатора PНP (включая сюда и его модули).

VS> О, вот так понятно объяснил, спасибо.

VS> Только что посмотрел, все три php56-mysql, php56-mysqli,
VS> php56-pdo_mysql используют libmysqlclient.so.18 по информации "pkg
VS> info", и стало быть, надо быть поосторожнее с my.cnf, видимо
VS> написанное в секции [client] может на них повлиять.

VS> Но всё это хозяйство собрано с "MYSQLND=off", надо попробовать
VS> пересобрать с "MYSQLND=on" и посмотреть, исчезнет ли зависимость.

В https://dev.mysql.com/doc/apis-php/e...p-mysqlnd.html про кодировки ничего нет.

Victor Sudakov, VAS4-RIPE, VAS47-RIPN
--- GoldED+/BSD 1.1.5-b20160322-b20160322
Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 03:15. Часовой пояс GMT +4.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc. Перевод: zCarot