LINUX.ORG.RU

кодировка UTF8 в SQL

 ,


0

1

На страничке некорректно составлялись отчёты после обновления opendcim c 3 на 4 версию. Воспользовавшись советами с Великой паутины, правил файл my.cnf [mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
init_connect='SET collation_connection = utf8_general_ci'
init_connect='SET NAMES utf8'
skip-character-set-client-handshake
[mysqldump]
default-character-set=utf8
Кроме того в файл конфига вставил:
$options = array( PDO:: MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8');
Теперь пропала страничка, выдаёт Error! SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) файла такого у меня нет, да вообще плохо понимаю, шито это значит. Кто-нибудь сталкивался?

Это значит, что нужно посмотреть в логи mysql на предмет ошибок запуска сервера (если ты его запускал, конечно).

Unicode4all ★★★★ ()
Последнее исправление: Unicode4all (всего исправлений: 1)

Error! SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

Сервер не запущен.

anonymous ()

Накосячил с my.cnf (например с синтаксисом) -> mysqld не запускается -> клиент не может к нему подключиться -> ????? -> PROFIT

MrClon ★★★★★ ()
Ответ на: комментарий от anonymous

Скорее инит-команда фейлится и сессия падает. Если под рутом коннектится, то прав таки я, а если нет - ты

no-dashi ★★★★★ ()
Ответ на: комментарий от MrClon

А конкретнее? Я понял, что sql не запускается, а вот как его запустить - это вопрос. Пробовал удалить то, что добавил, всё вернулось, т.е. пропал utf8 и каракули на странице. Т.е. только 2 варианта: либо каракули, либо не запускается sql? )

Lastic ()
Ответ на: комментарий от Lastic

Смотри в логе, на какую строку ругается mysqld, и исправляй.

anonymous ()
Ответ на: комментарий от anonymous

Cпасибо, исправил, но кодировка не меняется в базе, как ни старался my.cnf :

 [mysqld]
character-set-server = utf8
collation-server = utf8_general_ci
skip-character-set-client-handshake
init_connect='SET collation_connection = utf8_general_ci'
init_connect='SET NAMES utf8'
[client]
default-character-set=utf8
[mysqldump]
default-character-set=utf8 
В файле настроек странички добавил
$pdo_options=array(
                PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'
        ); 
Сделал и такое на всякий...
mysql>ALTER DATABASE database CHARACTER SET utf8 COLLATE utf8_general_ci;
Теперь всё вроде норм:
mysql>  SHOW VARIABLES LIKE 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
но на страничке http://localhost/..... по прежнему DDD и тому подобное. Сделал дамп, в нём сменил кодировку и перезалил, теперь - вместо DDD ИВЦ Как исправить на нормальный язык?

Lastic ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.