Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как в PHP используя PDO MySql установить lc_time_names = 'ru_RU'?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
muravey
Отправлено: 13 Июня, 2013 - 23:13:44
Post Id


Новичок


Покинул форум
Сообщений всего: 21
Дата рег-ции: Май 2013  


Помог: 0 раз(а)




Как в 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.  


Что я делаю не правильно?
 
 Top
DelphinPRO
Отправлено: 14 Июня, 2013 - 00:40:41
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




muravey пишет:
is a read only variable

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


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
muravey
Отправлено: 14 Июня, 2013 - 08:55:49
Post Id


Новичок


Покинул форум
Сообщений всего: 21
Дата рег-ции: Май 2013  


Помог: 0 раз(а)




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 установщик установил локаль не обращаясь в тех подд хостера.
 
 Top
DelphinPRO
Отправлено: 14 Июня, 2013 - 13:55:12
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




ну а если просто запрос выполнять? без MYSQL_ATTR_INIT_COMMAND
PHP:
скопировать код в буфер обмена
  1. self::$_mHandler->query("SET lc_time_names = 'ru_RU'");


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
muravey
Отправлено: 15 Июня, 2013 - 16:10:51
Post Id


Новичок


Покинул форум
Сообщений всего: 21
Дата рег-ции: Май 2013  


Помог: 0 раз(а)




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.  


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



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




перевести я и сам могу Улыбка

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


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
muravey
Отправлено: 15 Июня, 2013 - 18:08:31
Post Id


Новичок


Покинул форум
Сообщений всего: 21
Дата рег-ции: Май 2013  


Помог: 0 раз(а)




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.  


но в приложении не видно изменений.
 
 Top
Мелкий Супермодератор
Отправлено: 15 Июня, 2013 - 18:13:31
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




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


-----
PostgreSQL DBA
 
 Top
muravey
Отправлено: 15 Июня, 2013 - 18:35:49
Post Id


Новичок


Покинул форум
Сообщений всего: 21
Дата рег-ции: Май 2013  


Помог: 0 раз(а)




Мелкий пишет:
А вот по поводу 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.  


У меня не работает Огорчение
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB