Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Вопрос по переносу бд

Сообщения:  [1-9] 

 
 автор: Trianon   (15.12.2009 в 16:00)   письмо автору
 
   для: ronin80   (15.12.2009 в 15:53)
 

>В общем вроде как получилось корректно экспортировать/импортировать БД, пока что только на виртуальную машину, но это уже прогресс :)

Респект в любом случае.

  Ответить  
 
 автор: ronin80   (15.12.2009 в 15:53)   письмо автору
 
   для: Trianon   (14.12.2009 в 21:07)
 

В общем вроде как получилось корректно экспортировать/импортировать БД, пока что только на виртуальную машину, но это уже прогресс :) завтра всё проверю, по крайней мере проблема с выполнением процедур и вставкой знаков вопросов решена

Экспортировать корректно базу получилось только через графического клиента (Navicat), там была возможность явно указать кодировку файла (file encoding), т.е. средствами от разработчика так и не смог корректно произвести экспорт БД, хотя как говорил уже выше кодировка везде одна - cp1251, не знаю как это называть, либо мои кривые руки, либо что то ещё, но факт в том что при экспорте я явно указывал дефолт чарсет, а файл всё равно получался в utf

Причём с такими проблемами столкнулся только при переносе БД на nix платформу, под windows таких проблем вообще не знал

  Ответить  
 
 автор: Trianon   (14.12.2009 в 21:07)   письмо автору
 
   для: ronin80   (14.12.2009 в 20:51)
 

Насколько я знаю, SET NAMES для root игнорируется в INIT-CONNECT.
Оно и оправданно. root все ж логин администратора сервера.
И именно для пользователя с именем root , а не для пользователя с аналогичными правами.
Нормальные пользователи таких имен носить не должны , будь они хоть трижды администраторами.

  Ответить  
 
 автор: ronin80   (14.12.2009 в 20:51)   письмо автору
 
   для: ronin80   (14.12.2009 в 20:47)
 

недавно наткнулся в сети на такое предположение (даже скажу утверждение автора) что при коннекте пользователя с правами root игнорируются конструкции SET NAMES, а у меня пользователю как раз присвоены такие права, была сделана попытка понизить в правах пользователя, не помогло

не знаю с какой стороны подойти к этой проблеме, вроде всё ясно, всё логично, а что то не стыкуется, может кто то сталкивался с такой проблемой?

  Ответить  
 
 автор: ronin80   (14.12.2009 в 20:47)   письмо автору
 
   для: Trianon   (14.12.2009 в 20:35)
 

кодировка бд как я уже показал cp1251, таковой и была изначально, проблемные поля я проверял, тоже cp1251, в утилите mysql я не понимаю почему кракозябры, ведь во всех графических клиентах, и в самом приложении русские буквы отображаются корректно, корректно происходит сортировка и фильтрация данных

импорт/экспорт базы на windows сервере проходит корректно, неоднократно уже делал это, всё работает нормально, причём на нескольких ПК (серверах)

с описанными выше проблемами столкнулся только при попытке переноса на линуксовый сервак (как уже говорил пользователи 2 года работают без проблем)

при конфигурировании линукс сервера все настройки делал идентично, кодировку cp1251 при установке, в файле конфигурации my.cnf, при коннекте пользователей SET NAMES cp1251

причём вставка данных в таблицы именно в программе клиенте проходит нормально, только при вставке данных через хранимую процедуру проявляется проблема, в теле процедуры ничего заумного, просто select into и потом insert into, пытался прямо в процедуре прописывать (при запуске транзакции) SET NAMES... , не помогает

  Ответить  
 
 автор: Trianon   (14.12.2009 в 20:35)   письмо автору
 
   для: ronin80   (14.12.2009 в 20:19)
 

похоже, изначально для некоторых полей кодировка была поставлена явно, а для других наследовалась от БД. А кодировка БД не соответствовала кодировке соединения при экспорте.
Каша довольно невкусная...

  Ответить  
 
 автор: ronin80   (14.12.2009 в 20:19)   письмо автору
 
   для: ronin80   (14.12.2009 в 20:09)
 

после экспорта, файл проверял Notepad++, кодировка получается UTF8, русские слова отображаются корректно, перед импортом все вхождения charset исправлял на cp1251 (там были вперемешку cp1251 и utf8)

  Ответить  
 
 автор: ronin80   (14.12.2009 в 20:18)   письмо автору
 
   для: ronin80   (14.12.2009 в 20:09)
 

да, забыл указать, при экспорте утилитой mysqldump указываю следующие параметры

--character-sets-dir="C:\Program Files\MySQL\MySQL Server 5.0\share\charsets\" --default-character-set=cp1251

  Ответить  
 
 автор: ronin80   (14.12.2009 в 20:09)   письмо автору
 
 

Решил перенести бд на линукс сервер. Появилась непонятная проблема, после импорта дампа в базу на линукс сервере в одном столбце (тип 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

тема избита, но не хватает в голове чтобы разобраться как всё это дело корректно импортировать на линукс сервер

  Ответить  

Сообщения:  [1-9] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования