Здравствуйте,


Есть необходимость перенести базу из версии Bugzilla 2.20 на Bugzilla 3.2 rc1.
В багзиле версии 2.20  в базе есть таблицы, которые не соответствуют новой схеме, база содержит значения на русском языке.
При запуске checksetup.pl он ругался на некоторые таблицы(bugs_on_date) и эту таблицу я удалила.
Затем запустила contrib/recode.pl --guess --show-failures --charset=koi8r и он стал выдавать ошибки для таблиц которые не из схемы:

Выделить код

Код:

Table fixes_prefs does not exist in the database schema. at Bugzilla/DB/Schema.pm line 1632.

Для некоторых таблиц выдавал ошибку:

Выделить код

Код:

Failed to guess: Key: H5tZ9TgOJt8GVKZKGLuA1w DATA: ц▌ц╦ц╗ц║ц╙ц═
Row: [bug_id = 11831]

Если кто-нибудь сталкивался с этим или есть какие-нибудь предположения помогите.

Заранее спасибо!

В какой кодировке БД от 2.20?

Был ли на 2.20 включен параметр 'utf8'?

В каких именно таблицах значения на русском, которые надо спасти?

О запуске какой версии checksetup.pl идет речь?

Дорогая Tuchka_84, а откуда вообще взялся koi8-r? По идее, там должна быть кодировка либо cp1251 с игнорированием регистра или с бинарным поиском, или кодировка utf8.

SnowyOwl пишет:

В какой кодировке БД от 2.20?

Был ли на 2.20 включен параметр 'utf8'?

Здравствуйте,

Как в Mysql посмотреть в какой кодировке отдельная база данных? (Bugzilla 2.20 установлена на чужой машине  на Windows, к этой машине я доступа не имею, но все что нужно могу спросить. Мне выслали .sql dump этой базы данных. Если в самом sql файле можно найти в какой кодировке БД, то скажите как).
Также где посмотреть в версии 2,20 включен ли параметр utf 8? У меня стоит только версия 3,2 Rc1, в 2.20 на той же вкладке эти настройки?
Могу также выслать настройки кодировок MYSQl (Show variables like '%char') на своем сервере( на FreeBSD)

SnowyOwl пишет:

О запуске какой версии checksetup.pl идет речь?

На моей машине стоит только Bugzilla 3,2rc1.
Поставила все по умолчанию - все работало  ОК(в localconfig задала dbname='bugstest';  ).
Захотела импортировать старую базу багзилы.
Создала в Mysql пустую базу с нужным именем bugs. Импортировала её из sql дампа.
Изменила в localconfig имя базы с 'bugstest' на 'bugs'. И затем перезапустила checksetup.pl, а затем уже recode.pl.

Заранее спасибо.

Здравствуйте, Tuchka_84, а не поставить ли Вам что-то вроде phpMyAdmin?
Я знаю, Вы не боитесь текстов на английском, вот здесь подробно: http://dev.mysql.com/doc/refman/5.0/en/charset.html .
Кстати, наткнулся на интересное сообщение касательно koi8-r http://lists.mysql.com/mysql/120760

Tuchka_84 пишет:

На моей машине стоит только Bugzilla 3,2rc1.
Захотела импортировать старую базу багзилы.
Создала в Mysql пустую базу с нужным именем bugs. Импортировала её из sql дампа.

Настоятельно рекомендую разделить два процесса: перенос базы в новую среду и upgrade до 3.2rc1.

Установите на своей машине 2.20 и проимпортируйте базу туда.  Станет понятно, был ли включен параметр 'utf8', кроме того, удастся выявить возможную разницу в настройках MySQL.

Параметр в 2.20 живет в том же месте что и в 3.2rc1.

Как только 2.20 заработает не хуже исходного -- включаем там utf8 (если не был включен) и запускаем checksetup.pl от 2.20.

После этого уже пробуем upgrade до 3.2rc1 и checksetup.pl, recode.pl, checksetup.pl

См. также
http://markmail.org/message/owb4mkvimq32run4
http://fixunix.com/mozilla/412192-troub … up-pl.html

SnowyOwl пишет:

Установите на своей машине 2.20 и проимпортируйте базу туда.

Хорошо. Буду пытаться установить 2.20. Как что-нибудь получится напишу.

SnowyOwl пишет:

Как только 2.20 заработает не хуже исходного -- включаем там utf8 (если не был включен) и запускаем checksetup.pl от 2.20.

Установила версию 2.20 на винду , установила туда базу .Все стало работать как на сервере (откуда была скопирована база). В багзиле utf8 был отключен.
MySQL версия :         4.0.21-nt-lo. status для базы выдает следующие настройки кодировки:

Выделить код

Код:

Current database:       bugs
Current user:           root@localhost
SSL:                    Not in use
Server version:         4.0.21-nt-log
Protocol version:       10
Connection:             localhost vi
Client characterset:    latin1
Server characterset:    latin1

Затем зашла в эту багзилу 2.20 и включила в настройках utf8. Запустила checksetup.pl :

Выделить код

Код:

C:\root\www\bugs>perl checksetup.pl

Checking perl modules ...
Checking for       AppConfig (v1.52)   ok: found v1.55
Checking for             CGI (v2.93)   ok: found v3.04
Checking for    Data::Dumper (any)     ok: found v2.121
Checking for    Date::Format (v2.21)   ok: found v2.22
Checking for             DBI (v1.38)   ok: found v1.50
Checking for      File::Spec (v0.84)   ok: found v0.87
Checking for      File::Temp (any)     ok: found v0.14
Checking for        Template (v2.08)   ok: found v2.13
Checking for      Text::Wrap (v2001.0131) ok: found v2001.09291
Checking for    Mail::Mailer (v1.67)   ok: found v1.74
Checking for    MIME::Base64 (v3.01)   ok: found v3.01
Checking for     MIME::Tools (v5.406)  ok: found v5.411
Checking for        Storable (any)     ok: found v2.12

The following Perl modules are optional:
Checking for              GD (v1.20)   ok: found v2.16
Checking for     Chart::Base (v1.0)    ok: found v2.3
Checking for       XML::Twig (any)     ok: found v3.22
Checking for       GD::Graph (any)     ok: found v1.43
Checking for GD::Text::Align (any)     ok: found v1.18
Checking for     PatchReader (v0.9.4)  ok: found v0.9.5
Checking for   Image::Magick (any)      not found

All the required modules are available at:
    http://landfill.bugzilla.org/ppm/
You can add the repository with the following command:
    ppm rep add bugzilla http://landfill.bugzilla.org/ppm/

If you want to convert BMP image attachments to PNG to conserve
disk space, you will need to install the ImageMagick application
Available from http://www.imagemagick.org, and the Image::Magick
Perl module by running (as Administrator):

   ppm install Image::Magick

Checking user setup ...
Removing existing compiled templates ...
Precompiling templates ...
Checking for      DBD::mysql (v2.9003) ok: found v3.0002
Checking for           MySQL (v4.0.14) ok: found v4.0.21-nt-log

Cleaning control characters from bug summaries... 6087... 27003... 27026... 27044... 27060... 27067.
.. 27070... 27075... 27080... 27081... 27083... 27084... 27091... 27092... 27103... 27105... 27108..
. 27124... 27128... 27145... 27146... 27149... 27150... 27151... 27152... 27153... 27154... 27157...
 27158... 27162... 27170... 27176... 27182... 27199... 27200... 27201... 27202... 27206... 27211...
27215... 27219... 27220... 27221... 27228... 27235... 27240... 27242... 27245... 27250... 27252... 2
7260... 27268... 27271... 27272... 27273... 27275... 27283... 27290... 27291... 27295... 27307... 27
328... 27340... 27342... 27343... 27345... 27352... 27353... 27354... 27355... 27359... 27363... 273
69... 27372... 27380... 27382... 27383... 27384... 27385... 27409... 27428... 27438... 27450... 2745
1... 27454... 27457... 27460... 27462... 27463... 27464... 27465... 27467... 27468... 27469... 27470
... 27475... 27477... 27479... 27480... 27482... 27483... 27484... 27485... 27486... 27487... 27488.
.. 27489... 27494... 27497... 27498... 27505... 27507... 27511... 27516... 27517... 27520... 27524..
. 27534... 27536... 27538... 27540... 27544... 27549... 27553... 27554... 27555... 27556... 27557...
 27559... 27560... 27562... 27565... 27568... 27569... 27570... 27571... 27583... 27586... 27588...
27598... 27600... 27603... 27607... 27608... 27609... 27610... 27618... 27621... 27624... 27625... 2
7626... 27633... 27637... 27638... 27639... 27640... 27646... 27647... 27648... 27654... 27655... 27
656... 27658... 27659... 27666... 27667... 27669... 27670... 27671... 27672... 27673... 27678... 276
79... 27691... 27692... 27693... 27694... 27695... 27696... 27697... 27701... 27705... 27706... 2770
7... 27708... 27709... 27710... 27711... 27713... 27714... 27715... 27717... 27718... 27719... 27720
... 27723... 27726... 27728... 27729... 27731... 27732... 27735... 27736... 27737... 27738... 27739.
.. 27744... 27745... 27746... 27747... 27748... 27749... 27750... 27751... 27752... 27753... 27754..
. 27755... 27759... 27761... 27762... 27766... 27767... 27768... 27769... 27770... 27771... 27775...
 27777... 27778... 27779... 27780... 27781... 27784... 27785... 27786... 27787... 27788... 27798...
27799... 27800... 27804... 27805... 27816... 27819... 27822... 27823... 27824... 27825... 27826... 2
7827... 27828... 27829... 27830... 27831... 27832... 27833... 27836... 27837... 27850... 27853... 27
855... 27858... 27867... 27868... 27900... 27901... 27902... 27903... 27905... 27911... 27913... 279
16... 27919... 27920... 27923... 27924... 27926... 27931... 27935... 27940... 27949... 27956... 2797
7... 27982... 27985... 28000... 28012... 28045... 28053... 28054... 28081... 28094... 28095... 28104
... 28109... 28110... 28116... 28124... 28125... 28126... 28147... 28158... 28159... 28160... 28168.
.. 28179... 28184... 28190... 28208... 28220... 28236... 28237... 28238... 28239... 28246... 28248..
. 28249... 28250... 28251... 28271... 28272... 28273... 28274... 28276... 28279... 28291... 28294...
 28302... 28311... 28320... 28321... 28322... 28337... 28340... 28343... 28346... 28347... 28352...
28353... 28354... 28356... 28361... 28362... 28363... 28369... 28375... 28383... 28386... 28389... 2
8394... 28396... 28397... 28398... 28399... 28400... 28402... 28403... 28405... 28406... 28407... 28
408... 28409... 28410... 28420... 28421... 28422... 28435... 28436... 28441... 28442... 28443... 284
45... 28446... 28447... 28448... 28449... 28451... 28454... 28456... 28457... 28464... 28477... 2847
8... 28479... 28480... 28483... 28484... 28486... 28492... 28499... 28501... 28504... 28545... 28560
... 28572... 28573... 28574... 28587... 28594... 28596... 28610... 28612... 28643... 28644... 28650.
.. 28651... 28652... 28653... 28658... 28666... 28680... 28695... 28696... 28699... 28704... 28706..
. 28716... 28720... 28722... 28726... 28732... 28735... 28742... 28743... 28763... 28768... 28770...
 28771... 28772... 28775... 28779... 28780... 28786... 28789... 28791... 28792... 28793... 28795...
28799... 28809... 28810... 28811... 28812... 28813... 28814... 28815... 28822... 28824... 28833... 2
8838... 28842... 28856... 28862... 28873... 28875... 28879... 28913... 28914... 28917... 28918... 28
921... 28922... 28927... 28938... 28940... 28945... 28947... 28948... 28953... 28960... 28961... 289
63... 28966... 28969... 28970... 28972... 28974... 28975... 28978... 28979... 28982... 28983... 2898
5... 28988... 28989... 28990... 28991... 28992... 28993... 28996... 28997... 28999... 29000... 29001
... 29002... 29003... 29004... 29006... 29007... 29008... 29028... 29039... 29040... 29041... 29043.
.. 29044... 29045... 29052... 29054... 29055... 29057... 29060... 29064... 29067... 29068... 29071..
. 29073... 29074... 29075... 29076... 29077... 29078... 29080... 29082... 29083... 29084... 29085...
 29086... 29089... 29090... 29093... 29095... 29098... 29099... 29100... 29101... 29102... 29107...
29118... 29133... 29134... 29135... 29140... 29141... 29142... 29145... 29147... 29150... 29151... 2
9152... 29153... 29154... 29157... 29159... 29171... 29177... 29180... 29181... 29186... 29187... 29
188... 29189... 29194... 29195... 29196... 29197... 29201... 29202... 29203... 29204... 29205... 292
06... 29207... 29208... 29209... 29210... 29211... 29212... 29217... 29219... 29221... 29225... 2922
6... 29228... 29230... 29231... 29233... 29234... 29235... 29237... 29238... 29239... 29240... 29241
... 29243... 29244... 29245... 29248... 29252... 29256... 29259... 29260... 29263... 29279... 29280.
.. 29283... 29285... 29296... 29299... 29300... 29308... 29309... 29310... 29312... 29313... 29315..
. 29316... 29317... 29318... 29321... 29323... 29324... 29325... 29326... 29328... 29330... 29333...
 29334... 29336... 29338... 29346... 29352... 29355... 29356... 29364... 29367... 29368... 29369...
29371... 29372... 29374... 29375... 29376... 29380... 29381... 29382... 29383... 29390... 29392... 2
9393... 29399... 29400... 29401... 29402... 29403... 29417... 29420... 29421... 29422... 29423... 29
424... 29430... 29431... 29432... 29437... 29438... 29439... 29441... 29444... 29455... 29457... 294
76... 29480... 29481... 29484... 29493... 29507... 29518... 29524... 29527... 29529... 29530... 2953
2... 29533... 29555... 29556... 29557... 29558... 29563... 29568... 29569... 29579... 29580... 29581
... 29583... 29584... 29586... 29590... 29593... 29595... 29596... 29597... 29598... 29600... 29601.
.. 29602... 29603... 29605... 29606... 29607... 29608... 29609... 29610... 29611... 29612... 29614..
. 29615... 29616... 29617... 29618... 29619... 29620... 29628... 29632... 29633... 29637... 29658...
 29665... 29668... 29669... 29671... 29672... 29673... 29675... 29682... 29685... 29686... done.
Now that you have installed Bugzilla, you should visit the
'Parameters' page (linked in the footer of the Administrator
account) to ensure it is set up as you wish - this includes
setting the 'urlbase' option to the correct url.

C:\root\www\bugs>

После этого опять зашла в багзилу 2.20 все стало "аброкодаброй"(квадратиками). В Эксплорере по умолчанию стала указана кодировка utf8.Если там выбираю Кирилица (Windows), то отображается корректно.
При запуске mysql и проверке параметров базы с помощью status ничего для неё не изменилось везде latin1.
Вопрос: теперь мне с такой настройкой сделать dump и уже пытаться развернуть её на сервере с bugzilla 3.2 На Freebsd и Mysql  5.1.26-rc-log?

Заранее спасибо.

Tuchka_84 пишет:

Вопрос: теперь мне с такой настройкой сделать dump и уже пытаться развернуть её на сервере с bugzilla 3.2 На Freebsd и Mysql  5.1.26-rc-log?

Да, именно так.  Сомнения только в одновременном апгрейде MySQL и Bugzilla, но об этом будем думать только если текущий замысел не пройдет почему-либо.

Вопрос(может быть глупый): На новом сервере Mysql пустую базу bugs создать с character set = utf8 или character set = latin1 (базу в которую буду делать импорт)? Когда устанавливаю bugzilla 3.2 rc1 она создает базу именно с character set = utf8. Могу попробовать оба способа.

Результат остался тем же самым :(.
Описываю свои шаги:
1. Создала в FreeBSD c установленной bugzilla 3.2 rc1 базу bugs(charset по умолчанию)
2. Сделала импорт в эту базу бэкапа версии с ХР .
3.Вот что выдает для неё команда status:

Выделить код

Код:

mysql> use bugs;
Database changed
mysql> status;
--------------
mysql  Ver 14.14 Distrib 5.1.26-rc, for portbld-freebsd7.0 (i386) using  5.2

Connection id:          2
Current database:       bugs
Current user:           root@localhost
SSL:                    Not in use
Current pager:          more
Using outfile:          ''
Using delimiter:        ;
Server version:         5.1.26-rc-log FreeBSD port: mysql-server-5.1.26
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    latin1
Conn.  characterset:    latin1
UNIX socket:            /tmp/mysql.sock
Uptime:                 3 min 59 sec

4.Заменила в localconfig имя базы на эту базу.
5.Вызвала checksetup.pl
6.Он выдал одну ошибку:

Выделить код

Код:

Converting table bugs_on_date... DBD::mysql::db do failed: The used table type doesn't support FULLTEXT indexes [for Statement "ALTER TABLE bugs_on_date TYPE = InnoDB"] at Bugzilla/DB/Mysql.pm line 298
        Bugzilla::DB::Mysql::bz_setup_database('Bugzilla::DB::Mysql=HASH(0x94aa1f0)') called at ./checksetup.pl line 143
freeserver#

7.Эта таблица в этой базе создается командой:

Выделить код

Код:

CREATE TABLE `bugs_on_date` (
  `bug_id` mediumint(9) NOT NULL auto_increment,
  `assigned_to` mediumint(9) NOT NULL default '0',
  `assigned` tinytext NOT NULL,
  `bug_file_loc` text,
  `bug_severity` varchar(64) NOT NULL default '',
  `bug_status` varchar(64) NOT NULL default '',
  `creation_ts` datetime default NULL,
  `delta_ts` datetime NOT NULL default '0000-00-00 00:00:00',
  `short_desc` mediumtext NOT NULL,
  `op_sys` varchar(64) NOT NULL default '',
  `priority` varchar(64) NOT NULL default '',
  `product_id` smallint(6) NOT NULL default '0',
  `product` tinytext NOT NULL,
  `rep_platform` varchar(64) NOT NULL default '',
  `reporter` mediumint(9) NOT NULL default '0',
  `version` varchar(64) NOT NULL default '',
  `component_id` smallint(6) NOT NULL default '0',
  `component` tinytext NOT NULL,
  `resolution` varchar(64) NOT NULL default '',
  `target_milestone` varchar(20) NOT NULL default '---',
  `qa_contact` mediumint(9) default NULL,
  `contact` tinytext NOT NULL,
  `status_whiteboard` mediumtext NOT NULL,
  `votes` mediumint(9) NOT NULL default '0',
  `keywords` mediumtext NOT NULL,
  `lastdiffed` datetime default NULL,
  `everconfirmed` tinyint(4) NOT NULL default '0',
  `reporter_accessible` tinyint(4) NOT NULL default '1',
  `cclist_accessible` tinyint(4) NOT NULL default '1',
  `estimated_time` decimal(5,2) NOT NULL default '0.00',
  `remaining_time` decimal(5,2) NOT NULL default '0.00',
  `deadline` datetime default NULL,
  `alias` varchar(20) default NULL,
  PRIMARY KEY  (`bug_id`),
  UNIQUE KEY `bugs_alias_idx` (`alias`),
  KEY `bugs_assigned_to_idx` (`assigned_to`),
  KEY `bugs_creation_ts_idx` (`creation_ts`),
  KEY `bugs_delta_ts_idx` (`delta_ts`),
  KEY `bugs_bug_severity_idx` (`bug_severity`),
  KEY `bugs_bug_status_idx` (`bug_status`),
  KEY `bugs_op_sys_idx` (`op_sys`),
  KEY `bugs_priority_idx` (`priority`),
  KEY `bugs_product_id_idx` (`product_id`),
  KEY `bugs_reporter_idx` (`reporter`),
  KEY `bugs_version_idx` (`version`),
  KEY `bugs_component_id_idx` (`component_id`),
  KEY `bugs_resolution_idx` (`resolution`),
  KEY `bugs_target_milestone_idx` (`target_milestone`),
  KEY `bugs_qa_contact_idx` (`qa_contact`),
  KEY `bugs_votes_idx` (`votes`),
  FULLTEXT KEY `bugs_short_desc_idx` (`short_desc`)
) TYPE=MyISAM PACK_KEYS=0;

что не понравилось скрипту checksetup.pl в этой таблице не знаю, но после удаления таблицы bugs_on_date я запустила checksetup.pl и дашла до места:

Выделить код

Код:

WARNING: We are about to convert your table storage format to UTF8. This
         allows Bugzilla to correctly store and sort international characters.

и нажала Ctrl-C чтобы выполнить перекодировку.
8.Выполнила команду ./contrib/recode.pl --guess --show-failures --charset=latin1 но получила теже самые кучу ошибок:

Выделить код

Код:

Failed to guess: Key: L1q7c5kkNIboprBLt0NVTQ DATA: ц░ц╔цєц═ц╙ц╡ц╝ц╟ ц╠ц╣ц╔ц╛ ц╗ ц╝ц╡цЇц╔ц╡ц╝ц╒: ...
Row: [id = 1368]
Failed to guess: Key: 7i18ZbEQOVFxtbLy/gGn4A DATA: ц└ц╝ц╙цЁц╛ц╔цґц╡ц═цІц╗ц©: ц╟цЁц╙ц╝ц╒ц╝цєц╠ц╡ц╒ц╝...
Converting fielddefs.name...
Converting fielddefs.description...
Row: [fieldid = 53]
Failed to guess: Key: pPTTnYhqYOv15wChILAtxA DATA: ц┬ц╠ц╞ц╟ц═ц╒ц╚ц╔цґц═
Table fixes_bugs does not exist in the database schema. at Bugzilla/DB/Schema.pm line 1632.

На этом recode.pl остановился.
Т.е. включение в настройках в версии 2,20 utf8 не помогло. Ошибки остались теже.
Что еще сделать не знаю.

Затем запустила contrib/recode.pl --guess --show-failures --charset=koi8r

Bugzilla 2.20 установлена на чужой машине на Windows

Если там выбираю Кирилица (Windows), то отображается корректно

Выполнила команду ./contrib/recode.pl --guess --show-failures --charset=latin1

Все это наталкивает на мысль, что база все же в кодировке Windows.  Если это так, надо

Выделить код

Код:

./contrib/recode.pl --show-failures --charset=cp1251

и никаких --guess

Восстановила базу из бэкапа и продела опять checksetup и затем :

Выделить код

Код:

freeserver# ./contrib/recode.pl --show-failures --charset=cp1251
Converting attachments.description...
Converting attachments.mimetype...
Converting attachments.filename...
Converting bug_severity.value...
Converting bug_status.value...
Converting bugs.bug_file_loc...
Converting bugs.bug_severity...
Converting bugs.bug_status...
Converting bugs.short_desc...
Converting bugs.op_sys...
Converting bugs.priority...
Converting bugs.rep_platform...
Converting bugs.version...
Converting bugs.resolution...
Converting bugs.target_milestone...
Converting bugs.status_whiteboard...
Converting bugs.keywords...
Converting bugs.alias...
Converting bugs_activity.added...
Converting bugs_activity.removed...
Converting bugs_fulltext.short_desc...
Converting bugs_fulltext.comments...
Converting bugs_fulltext.comments_noprivate...
Converting classifications.name...
Converting classifications.description...
Converting components.name...
DBD::mysql::st execute failed: Duplicate entry '1047-п≤пЇпЄп╣п╩п╦я▐ п╨я─п╣п©п╣пІпҐя▀п╣ пЄп╩я▐ я└п╩п╟пҐя├п╣п╡я▀я┘' for key 'components_product_id_idx' [for Statement "UPDATE components SET name = ? WHERE id = ?" with ParamValues: 1='1280', 0='п.пЇпЄп╣п╩п╦я. п╨я.п╣п©п╣пІпҐя.п╣ пЄп╩я. я.п╩п╟пҐя.п╣п╡я.я. я.п╬п╣пЄп╦пҐп╣пҐп╦п╧. п.п╬п╨я.п╪п╣пҐя.п╟я.п╦я.'] at ./contrib/recode.pl line 299
freeserver#

Может еще чтото попробовать?

Ура у меня кое-что получилось.:)
Проблема в таблице components действительно заключалась в том что utf занимает в 2 раза больше и varchar(64) не хватало при перекодировке.
Описываю что мне удалось сделать:
Сделала дамп одной таблицы components исходной базы. С помощью программы Штирлиц открыла дамп этой таблицы и перекодировала её в utf8.
Попыталась залить её в новую базу но mysql при импорте таблицы выводил warning-и, потом я тестовым скриптов вывела выборку из этой таблицы и действительно при импорте у некоторых записей "укоротились" значения в столбце name.
Поэтому я в дампе для таблицы components изменила name varchar(64) на name varchar(128) и все прошло отлично. Таблица полностью залилась в базу без единого варнинга. Выборка тестовым скриптом также вывела что все данные на месте.
Теперь буду "крутить" остальные таблицы.

Превосходно!

recode.pl официально поддерживается, это стоит эскалировать на bugzilla.mozilla.org

Держали небольшой совет в Филях http://bugzilla.glob.com.au/irc/?a=date … ov+25+2008.

Японские коллеги делали это отдельным скриптом из базы в базу http://www.mozilla.gr.jp/~shimono/transcode.pl. Скрипт статичен по отношению к версии БД.

SnowyOwl пишет:

Превосходно!

recode.pl официально поддерживается, это стоит эскалировать на bugzilla.mozilla.org

Т.е. мне нужно создать ошибку с описанием проблемы при перекодировке старой базы версии 2.20  в 3.2 rc1?

:angry:
Теперь я уже ничего не понимаю:(
Перекодировала все таблицы из cp1251 в utf-8. Затем вызвала checksetup.pl он насоздавал дополнительных таблиц столбцов и т.д.
Зашла в багзилу там все равно все данные "аброкодаброй".
Написала простой скрипт выборки для таблицы bugs

Выделить код

Код:

my $sth = $dbh->prepare ("SELECT bug_id, short_desc FROM bugs WHERE (bug_id > 30000) LIMIT 45");
$sth->execute();
my $count =0;
while (my  @val = $sth->fetchrow_array())
{
print " bug_id: $val[0] short_desc: $val[1] \n";
print "<br>";
++$count;
}
$sth->finish();
print "$count rows were returned\n";

Вызываю его из того же Эксплорера что и багзилу, включаю туже кодировку Юникод (UTF-8) и все ошибки выводятся русскими буквами нормально. Т.е. в базе хранятся именно данные в utf-8.
Теперь я уже не знаю что и делать.
В настройках багзилы UTF-8 Включен.:cry:

Когда устанавливала багзилу 3.2rc1 она автоматически создала пустую базу ( я её назвала bugstest).
Создала в этой тестовой базе пару ошибок с русским наименованием. В самой багзиле они отображаются корректно.
Но когда я создала и для этой базы тестовый скрипт:

Выделить код

Код:

my $sth = $dbh->prepare ("SELECT bug_id, short_desc FROM bugs ");
$sth->execute();
my $count =0;
while (my  @val = $sth->fetchrow_array())
{
print " bug_id: $val[0] short_desc: $val[1] \n";
print "<br>";
++$count;
}
$sth->finish();
print "$count rows were returned\n";

И вызвала его из Эксплорера с кодировкой utf-8 все русские наименования отображаются знаками вопроса.
Может все таки не в utf-8 хранятся данные в багзиле а как то еще?

:):):):):):)
УРА УРА УРА
У меня все же получилось перенести базу .
Как оказалось без recode.pl всеже не обойтись.
Описываю как перенести базу из 2.20 в 3.2 rc1:
1. Из дампа базы с 2.20 импортировать данные в базу( в кодировке latin1 !!!)на новом сервере
2. Если в этой базе есть таблицы не из схемы багзилы (т.е. те которые добавлялись вручную их нужно будет сохранить в дамп и перед декодировкой удалить)
3. В localconfig установить db_name= развернутой базе из версии 2.20.
4.Вызвать checksetup.pl
5.Он переделает таблицы в TYPE InnoDB должен написать что необходимо вызвать ./contrib/recode.pl  для этого нажмите Ctrl+C
6.Вызвать ./contrib/recode.pl --show-failures --charset=cp1251
7. Если будут возникать ошибки перекодировки и перекодировка остановится, как возникли у меня в таблицах : components, products, series_categories я в дампах этих таблиц увеличила размер с varchar(64) на varchar(128) для с столбцов для которых возникает ошибка. Восстановила эти таблицы вновь( с новым размером столбцов)
8.Вызвала recode.pl  вновь и дождалась победного конца
9.Затем опять checksetup.pl . Когда он опять предложил перекодироваться нажала Enter(для продолжения)
10.Этот скрипт сам преобразовал мне все таблицы, добавли еще необходимые таблицы и столбцы.
11.Затем запустила багзилу и все заработало . УРА. я так рада. Конечно у некоторых записей возможно урезались какие-то поля, но это смогу определить только при работе с базой.
Как заключение iconv -f cp1251 -t utf-8 мне не помог recode.pl перекодирует похоже как-то по-другому. Поэтому советую использовать ИМЕННО его при переходе с багзилы 2,20 на 3,2

А на этапе 1. он кириллицу не гробит? Интересно, почему?

Al_H пишет:

А на этапе 1. он кириллицу не гробит? Интересно, почему?

Потому что исходная база на Mysql 4.0 тоже была запихнута в db charset =latin1. И работала нормально.

Здравствуйте,
У меня возник еще вопрос:
Можно ли перекодировать с помощью recode.pl  не только стандартные таблицы багзилы, но и свои из этой же базы?
Как я уже писала при вызове recode.pl для базы, у которой есть не стандартные таблицы, скрипт на этом останавливается:

Выделить код

Код:

Table fixes_prefs does not exist in the database schema. at Bugzilla/DB/Schema.pm line 1632.

Разобраться в Schema.pm чтобы там к примеру дописать эти таблицы в список я не смогла. Может кто-то уже делал такое?
Вот код на котором останавливается recode.pl:

Выделить код

Код:

 sub get_table_list {
   1618
   1619 =item C<get_table_list>
   1620
   1621  Description: Public method for discovering what tables should exist in the
   1622               Bugzilla database.
   1623
   1624  Parameters:  none
   1625
   1626  Returns:     An array of table names, in alphabetical order.
   1627
   1628 =cut
   1629
   1630     my $self = shift;
   1631     return sort keys %{$self->{schema}};
   1632 }

Заранее спасибо.