Страница 1 из 1

PHP MySQL клиент

Добавлено: 2009-02-17 12:04:35
Hazzard
В общем беда. В общем по сути:

Если подключаться через шелл к серваку (mysql -u root) то

Код: Выделить всё

mysql> show variables like "char%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | cp1251                     |
| character_set_connection | cp1251                     |
| character_set_database   | cp1251                     |
| character_set_filesystem | binary                     |
| character_set_results    | cp1251                     |
| character_set_server     | cp1251                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
а если через пхп то

Код: Выделить всё

character_set_client    latin1    
character_set_connection    latin1    
character_set_database    cp1251    
character_set_filesystem    binary    
character_set_results    latin1    
character_set_server    cp1251    
character_set_system    utf8    
character_sets_dir    /usr/share/mysql/charsets/

Код: Выделить всё

SET NAMES cp1251;
Помогает но только на время этой сессии, а надо чтобы на весь сервер действовало...



вопрос - что делать? надо чтобы в пхп было как в первом случае иначе пхп и пишет и получает данные из базы вопросами ...

Re: PHP MySQL клиент

Добавлено: 2009-02-17 13:22:12
MAK
вызови SET NAMES везде, сразу после коннекта к бд.

Re: PHP MySQL клиент

Добавлено: 2009-02-17 13:56:08
Hazzard
MAK писал(а):вызови SET NAMES везде, сразу после коннекта к бд.
читайте внимательно пост..

Re: PHP MySQL клиент

Добавлено: 2009-02-17 15:10:13
zg
Hazzard писал(а):вопрос - что делать? надо чтобы в пхп было как в первом случае иначе пхп и пишет и получает данные из базы вопросами ...
http://anton-pribora.ru/articles/mysql/ ... rset-mycnf

Код: Выделить всё

---- Файл my.cnf
[client]
# Для местного клиента
default-character-set=cp1251
....

[mysqld]
# Для всего сервера
default-character-set=cp1251
....

Re: PHP MySQL клиент

Добавлено: 2009-02-17 17:16:52
Hazzard
zg писал(а):
Hazzard писал(а):вопрос - что делать? надо чтобы в пхп было как в первом случае иначе пхп и пишет и получает данные из базы вопросами ...
http://anton-pribora.ru/articles/mysql/ ... rset-mycnf

Код: Выделить всё

---- Файл my.cnf
[client]
# Для местного клиента
default-character-set=cp1251
....

[mysqld]
# Для всего сервера
default-character-set=cp1251
....

гуглить меня мама в детстве научила ... так что это всё было давно испробовано (точно также как инит_коннект и инит-коннект)
помогает это тока при работе через шелл ...

Re: PHP MySQL клиент

Добавлено: 2009-02-17 17:25:28
zg
Hazzard писал(а):гуглить меня мама в детстве научила ...
жаль, что не научила читать :cf:
Hazzard писал(а):помогает это тока при работе через шелл ...
это судьба... всех, кто не умеет читать и думать, хотя бы иногда.... -)

Re: PHP MySQL клиент

Добавлено: 2009-02-17 17:26:37
Hazzard
zg писал(а):
Hazzard писал(а):гуглить меня мама в детстве научила ...
жаль, что не научила читать :cf:
Hazzard писал(а):помогает это тока при работе через шелл ...
это судьба... всех, кто не умеет читать и думать, хотя бы иногда.... -)
Уважаемый, не стоит перегибать палку - не работает это.

Re: PHP MySQL клиент

Добавлено: 2009-02-17 17:30:36
zg
Hazzard писал(а):Уважаемый, не стоит перегибать палку
гм... читать-то не?
Hazzard писал(а):не работает это
работает

Re: PHP MySQL клиент

Добавлено: 2009-02-17 18:24:23
MAK
*с серьезным видом*
Hazzard, укажите, пожалуйста по пунктам, какими методами вы пытались решить проблему.

Re: PHP MySQL клиент

Добавлено: 2009-02-17 21:41:50
Hazzard
MAK писал(а):*с серьезным видом*
Hazzard, укажите, пожалуйста по пунктам, какими методами вы пытались решить проблему.
Пробовал добавлять такие и подобные таким строкам во все разделы конфига поочерёдно и вместе, пробовал добовлять комманды типа инит_коннект (и аналогичные) пробовал менять пользователя для подключения к бд из пхп (такой совет тоже гдето вычитал), пробовал полностью пересоздавать базу, таблицу.. пробовал копаться в конфигах апача и пхп (ничё толком не нашол) пробовал ещё много маловразумительных советов, ничего не помогает. Через консоль всё гуд, через пхп тока Сет Неймс...

Re: PHP MySQL клиент

Добавлено: 2009-02-18 0:47:27
voider
2 Hazard я только недавна с этим мучался :)
читай
http://forum.lissyara.su/viewtopic.php?f=11&t=14928

Re: PHP MySQL клиент

Добавлено: 2009-02-18 1:03:24
Hazzard
voider писал(а):2 Hazard я только недавна с этим мучался :)
читай
http://forum.lissyara.su/viewtopic.php?f=11&t=14928
топик читал, проблема схожая, решение такое не подходит (опятьже читайте топик внимательней) нужно прописать так чтобы для любого скрипта уже самопо себе было выставленно Set Names cp1251;

Re: PHP MySQL клиент

Добавлено: 2009-02-18 1:04:50
voider
а почему у меня подошло? перезагрузку делал?

Re: PHP MySQL клиент

Добавлено: 2009-02-18 1:10:53
voider
обрати внимание

Код: Выделить всё

basedir /usr/local/mysql-5.0.22-freebsd6.0-i386/ 
binlog cache size 32,768 
bulk insert buffer size 8,388,608 
character set client utf8 
(Global value) cp1251 
character set connection utf8 
(Global value) cp1251 
character set database cp1251 
character set filesystem binary 
character set results utf8 
(Global value) cp1251 
character set server cp1251 
character set system utf8 
character sets dir /usr/local/mysql-5.0.22-freebsd6.0-i386/share/mysql/charsets/ 
collation connection utf8_unicode_ci 
(Global value) cp1251_general_ci 
collation database cp1251_general_ci 
(Global value) если есть такая штука значит типа она говорит какое глобальное значение если не совпадает ,а если вопаадет то ничего не пишет

Re: PHP MySQL клиент

Добавлено: 2009-02-18 1:13:06
voider
может ошибся в пунктуации :))) бывает:)

Re: PHP MySQL клиент

Добавлено: 2009-02-18 3:02:33
Hazzard
всё в общем то хорошо тока я забыл указать что это под Debian надо ...

Re: PHP MySQL клиент

Добавлено: 2009-02-18 3:06:17
zingel
а чего сразу не сказал, тему нужно в *линукс*

Re: PHP MySQL клиент

Добавлено: 2009-02-18 5:17:09
voider
8)

Re: PHP MySQL клиент

Добавлено: 2009-02-18 21:09:45
Hazzard
посоветуйте чтонить дельное, уже не знаю что попробовать ...

Re: PHP MySQL клиент

Добавлено: 2009-02-18 22:23:01
zg
Hazzard писал(а):посоветуйте чтонить дельное
читать и думать, всегда помогает

Re: PHP MySQL клиент

Добавлено: 2009-02-19 11:35:35
Hazzard
zg писал(а):
Hazzard писал(а):посоветуйте чтонить дельное
читать и думать, всегда помогает
В общем ты отчасти был прав ... методом перебора была найдена та комбинация строк в конфиге (раздел [mysqld]) чтобы всё было как надо .. приду с работы - выложу код.

Re: PHP MySQL клиент

Добавлено: 2009-02-19 12:05:15
zg
Hazzard писал(а):В общем ты отчасти был прав
там суть в том, что есть глобальные настройки для сервера и настройки для сессии, в которой работает клиент. Настройки для сессии по умолчанию берутся из глобальных настроек, но при этом могут меняться по запросу клиента.

Код: Выделить всё

mysql> select @@global.character_set_connection, @@session.character_set_connection;
+-----------------------------------+------------------------------------+
| @@global.character_set_connection | @@session.character_set_connection |
+-----------------------------------+------------------------------------+
| latin1                            | latin1                             |
+-----------------------------------+------------------------------------+
1 row in set (0.00 sec)

mysql> set names 'koi8r';
Query OK, 0 rows affected (0.00 sec)

mysql> select @@global.character_set_connection, @@session.character_set_connection;
+-----------------------------------+------------------------------------+
| @@global.character_set_connection | @@session.character_set_connection |
+-----------------------------------+------------------------------------+
| latin1                            | koi8r                              |
+-----------------------------------+------------------------------------+
1 row in set (0.00 sec)

mysql>
поэтому ты в первую очередь должен был смотреть на переменные сервера, а потом на переменные сессии.

Re: PHP MySQL клиент

Добавлено: 2009-02-19 12:10:54
Hazzard
zg писал(а):...
поэтому ты в первую очередь должен был смотреть на переменные сервера, а потом на переменные сессии.
так и делал, просто нигде не нашол информации о том чтоже всётаки туда писать ...

Re: PHP MySQL клиент

Добавлено: 2009-02-19 12:53:18
zg
туда пишутся параметры для запуска, например

Код: Выделить всё

zg# mysql -e 'show variables like "char%";'
+--------------------------+----------------------------------+
| Variable_name            | Value                            |
+--------------------------+----------------------------------+
| character_set_client     | latin1                           |
| character_set_connection | latin1                           |
| character_set_database   | koi8r                            |
| character_set_filesystem | binary                           |
| character_set_results    | latin1                           |
| character_set_server     | koi8r                            |
| character_set_system     | utf8                             |
| character_sets_dir       | /usr/local/share/mysql/charsets/ |
+--------------------------+----------------------------------+
zg# cat /etc/my.cnf
[mysqld]
character-set-server=koi8r
zg#
или так

Код: Выделить всё

zg# cat /etc/my.cnf
[mysqld]
default-character-set=koi8r
init-connect = "set names koi8r"
skip-character-set-client-handshake
zg# mysql -e 'show variables like "char%";'
+--------------------------+----------------------------------+
| Variable_name            | Value                            |
+--------------------------+----------------------------------+
| character_set_client     | koi8r                            |
| character_set_connection | koi8r                            |
| character_set_database   | koi8r                            |
| character_set_filesystem | binary                           |
| character_set_results    | koi8r                            |
| character_set_server     | koi8r                            |
| character_set_system     | utf8                             |
| character_sets_dir       | /usr/local/share/mysql/charsets/ |
+--------------------------+----------------------------------+
zg# mysql -e 'set names "cp1251"; show variables like "char%";'
+--------------------------+----------------------------------+
| Variable_name            | Value                            |
+--------------------------+----------------------------------+
| character_set_client     | cp1251                           |
| character_set_connection | cp1251                           |
| character_set_database   | koi8r                            |
| character_set_filesystem | binary                           |
| character_set_results    | cp1251                           |
| character_set_server     | koi8r                            |
| character_set_system     | utf8                             |
| character_sets_dir       | /usr/local/share/mysql/charsets/ |
+--------------------------+----------------------------------+
zg#
в любом случае всё работает -)

Код: Выделить всё

zg# mysql -e 'set names "cp1251"; select @@global.character_set_client, @@session.character_set_client;'
+-------------------------------+--------------------------------+
| @@global.character_set_client | @@session.character_set_client |
+-------------------------------+--------------------------------+
| koi8r                         | cp1251                         |
+-------------------------------+--------------------------------+
zg#