|
|
|
|
|
для: ronin80
(15.12.2009 в 15:53)
| | >В общем вроде как получилось корректно экспортировать/импортировать БД, пока что только на виртуальную машину, но это уже прогресс :)
Респект в любом случае. | |
|
|
|
|
|
|
|
для: Trianon
(14.12.2009 в 21:07)
| | В общем вроде как получилось корректно экспортировать/импортировать БД, пока что только на виртуальную машину, но это уже прогресс :) завтра всё проверю, по крайней мере проблема с выполнением процедур и вставкой знаков вопросов решена
Экспортировать корректно базу получилось только через графического клиента (Navicat), там была возможность явно указать кодировку файла (file encoding), т.е. средствами от разработчика так и не смог корректно произвести экспорт БД, хотя как говорил уже выше кодировка везде одна - cp1251, не знаю как это называть, либо мои кривые руки, либо что то ещё, но факт в том что при экспорте я явно указывал дефолт чарсет, а файл всё равно получался в utf
Причём с такими проблемами столкнулся только при переносе БД на nix платформу, под windows таких проблем вообще не знал | |
|
|
|
|
|
|
|
для: ronin80
(14.12.2009 в 20:51)
| | Насколько я знаю, SET NAMES для root игнорируется в INIT-CONNECT.
Оно и оправданно. root все ж логин администратора сервера.
И именно для пользователя с именем root , а не для пользователя с аналогичными правами.
Нормальные пользователи таких имен носить не должны , будь они хоть трижды администраторами. | |
|
|
|
|
|
|
|
для: ronin80
(14.12.2009 в 20:47)
| | недавно наткнулся в сети на такое предположение (даже скажу утверждение автора) что при коннекте пользователя с правами root игнорируются конструкции SET NAMES, а у меня пользователю как раз присвоены такие права, была сделана попытка понизить в правах пользователя, не помогло
не знаю с какой стороны подойти к этой проблеме, вроде всё ясно, всё логично, а что то не стыкуется, может кто то сталкивался с такой проблемой? | |
|
|
|
|
|
|
|
для: Trianon
(14.12.2009 в 20:35)
| | кодировка бд как я уже показал cp1251, таковой и была изначально, проблемные поля я проверял, тоже cp1251, в утилите mysql я не понимаю почему кракозябры, ведь во всех графических клиентах, и в самом приложении русские буквы отображаются корректно, корректно происходит сортировка и фильтрация данных
импорт/экспорт базы на windows сервере проходит корректно, неоднократно уже делал это, всё работает нормально, причём на нескольких ПК (серверах)
с описанными выше проблемами столкнулся только при попытке переноса на линуксовый сервак (как уже говорил пользователи 2 года работают без проблем)
при конфигурировании линукс сервера все настройки делал идентично, кодировку cp1251 при установке, в файле конфигурации my.cnf, при коннекте пользователей SET NAMES cp1251
причём вставка данных в таблицы именно в программе клиенте проходит нормально, только при вставке данных через хранимую процедуру проявляется проблема, в теле процедуры ничего заумного, просто select into и потом insert into, пытался прямо в процедуре прописывать (при запуске транзакции) SET NAMES... , не помогает | |
|
|
|
|
|
|
|
для: ronin80
(14.12.2009 в 20:19)
| | похоже, изначально для некоторых полей кодировка была поставлена явно, а для других наследовалась от БД. А кодировка БД не соответствовала кодировке соединения при экспорте.
Каша довольно невкусная... | |
|
|
|
|
|
|
|
для: ronin80
(14.12.2009 в 20:09)
| | после экспорта, файл проверял Notepad++, кодировка получается UTF8, русские слова отображаются корректно, перед импортом все вхождения charset исправлял на cp1251 (там были вперемешку cp1251 и utf8) | |
|
|
|
|
|
|
|
для: ronin80
(14.12.2009 в 20:09)
| | да, забыл указать, при экспорте утилитой mysqldump указываю следующие параметры
--character-sets-dir="C:\Program Files\MySQL\MySQL Server 5.0\share\charsets\" --default-character-set=cp1251 | |
|
|
|
|
|
|
| Решил перенести бд на линукс сервер. Появилась непонятная проблема, после импорта дампа в базу на линукс сервере в одном столбце (тип char(1)) при выполнении хранимых процедур вставляются знаки вопроса, в остальных текстовых полях всё ок, русский текст отображается нормально. При вставке данных непосредственно в клиентской программе также корректно вставляются русские буквы.
Не понимаю в чём проблема, если бы дело было в кодировке, то это отразилось бы на всей бд, а так получается только на одном столбце такая проблема, причём только при вставке данных через хранимую процедуру.
И ещё вопросик по кодировке, перешерстил весь форум, и теперь запутался совсем. Перед экспортом дампа проверил значения переменных charset% и кодировки базы и таблиц, вот что получаю
MySQLAdministrator выдаёт следующее
character_set_client cp1251
character_set_connection cp1251
character_set_database cp1251
character_set_results cp1251
character_set_server cp1251
character_set_system utf8
collation_connection cp1251_general_ci
collation_database cp1251_general_ci
collation_server cp1251_general_ci
информация по бд
mysql> show create database jevel;
+----------+------------------------------------------------------------------+
| Database | Create Database |
+----------+------------------------------------------------------------------+
| jevel | CREATE DATABASE `jevel` /*!40100 DEFAULT CHARACTER SET cp1251 */ |
+----------+------------------------------------------------------------------+
1 row in set (0.02 sec)
вот что получаю через утилиту mysql
mysql> show variables like 'character%';
+--------------------------+----------------------------------------------------
-----+
| Variable_name | Value
|
+--------------------------+----------------------------------------------------
-----+
| 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 | C:\Program Files\MySQL\MySQL Server 5.0\share\chars
ets\ |
+--------------------------+----------------------------------------------------
-----+
??? вот этой фишки я вообще не понял ??? как это понимать ?
в файле конфигурации сервера my.ini прописано следующее
[mysqld]
...
# The default character set that will be used when a new schema or table is
# created and no character set is defined
default-character-set=cp1251
init-connect="SET NAMES cp1251"
...
вроде всё ок, но не могу понять какая же всё таки кодировка используется? в клиенте mysql то самое текстовое поле показывает знаками вопроса, в программе клиенте (с которой пользователи уже 2 года работают) нормально русскими буквами (при коннекте используется SET NAMES cp1251)
после экспорта дампа файл получается в кодировке UTF8
тема избита, но не хватает в голове чтобы разобраться как всё это дело корректно импортировать на линукс сервер | |
|
|
|
|