Форумы портала PHP.SU » » Работа с СУБД » Как в PHP используя PDO MySql установить lc_time_names = 'ru_RU'?

Страниц (1): [1]
 

1. muravey - 13 Июня, 2013 - 23:13:44 - перейти к сообщению
Как в PHP используя PDO MySql установить lc_time_names = 'ru_RU'?

Нужно решение установки в конфиге сайта, а не в конфигурационном файле.

Я делал так
PHP:
скопировать код в буфер обмена
  1.  
  2. // Создаем новый экземпляр класса PDO
  3.         self::$_mHandler = new PDO(PDO_DSN,
  4.                                    DB_USERNAME,
  5.                                    DB_PASSWORD,
  6.                                    array(PDO::ATTR_PERSISTENT => DB_PERSISTENCY,
  7.                                          PDO::MYSQL_ATTR_INIT_COMMAND => "SET lc_time_names = '".RU_RU."'"));
  8.  


config.php


Выдает ошибку
PHP:
скопировать код в буфер обмена
  1.  
  2. SQLSTATE[HY000] [1238] Variable 'lc_time_names' is a read only variable
  3.  


Что я делаю не правильно?
2. DelphinPRO - 14 Июня, 2013 - 00:40:41 - перейти к сообщению
muravey пишет:
is a read only variable

написано "только для чтения", значит нельзя в эту переменную записывать.
3. muravey - 14 Июня, 2013 - 08:55:49 - перейти к сообщению
DelphinPRO пишет:
muravey пишет:
is a read only variable

написано "только для чтения", значит нельзя в эту переменную записывать.


Может вы знаете.

Раньше в скриптах писал так
PHP:
скопировать код в буфер обмена
  1.  
  2. /*  Установка русской локали соединения */
  3.          mysql_query("SET lc_time_names = 'ru_RU'") ;
  4.  


И все было ок. Когда выводил дату из базы месяц был по русски

Сейчас перешел на PDO и ни где не могу найти как из скрипта установить локаль?

Если устанавливаю через my.ini все ок.

Но мне надо для cms, чтобы install.php установщик установил локаль не обращаясь в тех подд хостера.
4. DelphinPRO - 14 Июня, 2013 - 13:55:12 - перейти к сообщению
ну а если просто запрос выполнять? без MYSQL_ATTR_INIT_COMMAND
PHP:
скопировать код в буфер обмена
  1. self::$_mHandler->query("SET lc_time_names = 'ru_RU'");
5. muravey - 15 Июня, 2013 - 16:10:51 - перейти к сообщению
DelphinPRO пишет:
ну а если просто запрос выполнять? без MYSQL_ATTR_INIT_COMMAND
PHP:
скопировать код в буфер обмена
  1. self::$_mHandler->query("SET lc_time_names = 'ru_RU'");


Ошибка
PHP:
скопировать код в буфер обмена
  1.  
  2. SQLSTATE[42000]: Syntax error or access violation: 1231 Variable 'lc_time_names' can't be set to the value of 'ru_RU'
  3.  


типа:
PHP:
скопировать код в буфер обмена
  1.  
  2. SQLSTATE [42000]: В случае синтаксической или нарушение прав доступа: 'lc_time_names' 1231 переменная не может быть установлена ​​в значение 'ru_RU'
  3.  


Что вообще получается никак.
В мануале тоже ничего не могу найти.
6. DelphinPRO - 15 Июня, 2013 - 16:40:13 - перейти к сообщению
перевести я и сам могу Улыбка

често говоря, затрудняюсь ответить. И главное не могу понять где ошибка. вроде в MySQL, но через расширение mysql_* работает, получается в драйвере PDO...
Ждем гуру в этом вопросе, если они есть тут...
7. muravey - 15 Июня, 2013 - 18:08:31 - перейти к сообщению
DelphinPRO пишет:
перевести я и сам могу Улыбка

често говоря, затрудняюсь ответить. И главное не могу понять где ошибка. вроде в MySQL, но через расширение mysql_* работает, получается в драйвере PDO...
Ждем гуру в этом вопросе, если они есть тут...


Так же ругается если хочу установить
PHP:
скопировать код в буфер обмена
  1.  
  2. SET ft_min_word_len = 3; //по умолчанию 4 это я использую при поиске
  3.  

(Добавление)
Если делаю так не ругается
PHP:
скопировать код в буфер обмена
  1.  
  2. PDO::MYSQL_ATTR_INIT_COMMAND => "SET @ft_min_word_len = 3,
  3.                                                                    @lc_time_names = 'ru_RU'"
  4.  


но в приложении не видно изменений.
8. Мелкий - 15 Июня, 2013 - 18:13:31 - перейти к сообщению
muravey пишет:
SET ft_min_word_len = 3;

И это верно. Смена настроек full-text возможна только в конфигурационном файле с перезапуском сервера СУБД и перестроением полнотекстовых индексов.

А вот по поводу lc_time_names ничего не скажу, из сессии ей возможно управлять: http://dev[dot]mysql[dot]com/doc/refman/[dot][dot][dot]m-variables[dot]html
9. muravey - 15 Июня, 2013 - 18:35:49 - перейти к сообщению
Мелкий пишет:
А вот по поводу lc_time_names ничего не скажу, из сессии ей возможно управлять: http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html


Как это можно сделать?
(Добавление)
Даже в мануале пишут что можно

CODE (SQL):
скопировать код в буфер обмена
  1.  
  2.  lc_time_names
  3.  
  4. System Variable Name    lc_time_names
  5. Variable Scope  Global, Session
  6. Dynamic Variable        Yes
  7.         Permitted VALUES
  8. Type    string
  9.  


CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. mysql> SET lc_time_names = 'es_MX';
  3. Query OK, 0 rows affected (0.00 sec)
  4.  
  5. mysql> SELECT @@lc_time_names;
  6. +-----------------+
  7. | @@lc_time_names |
  8. +-----------------+
  9. | es_MX           |
  10. +-----------------+
  11. 1 row IN SET (0.00 sec)
  12.  
  13. mysql> SELECT DAYNAME('2010-01-01'), MONTHNAME('2010-01-01');
  14. +-----------------------+-------------------------+
  15. | DAYNAME('2010-01-01') | MONTHNAME('2010-01-01') |
  16. +-----------------------+-------------------------+
  17. | viernes               | enero                   |
  18. +-----------------------+-------------------------+
  19.  


У меня не работает Огорчение

 

Powered by ExBB FM 1.0 RC1