Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Проблемы с переносом базы данных на удаленный серв (Duplicate entry " for key 1)

00 голосов
4
Добрый день, после настройки сайта на локальной машине (denwer + windows)

Переношу сайт на сервер (apache 2.2 + freebsd)

сделал резервную копию сайта, вставил архив + restore.php
прописал доступ на freebsd, создал базу данных, пользователя.
Распаковал архив с помощью restore.php во время установки базы данных на 0% выскакивает ошибка

Код
Duplicate entry 'без-ru-0.1187-184' for key 1


Сайт сделан в кодировке UTF-8
в php.ini прописаны директивы необходимые для работы utf-8
при распаковке архива в файле .sql иероглифы непонятной кодировки, в местах русского текста.
спросил 29 Янв, 14 от Xenam (160 баллов)

4 Ответы

00 голосов
Цитата
PAND-or пишет:
при распаковке архива в файле .sql иероглифы непонятной кодировки, в местах русского текста.

А чем смотрели?
Цитата
PAND-or пишет:
Duplicate entry 'без-ru-0.1187-184' for key 1

Для какой таблицы?
ответил 02 Июнь, 14 от Pomnep (13,960 баллов)
00 голосов
Цитата
Евгений Жуков пишет:
Цитата PAND-or пишет: при распаковке архива в файле .sql иероглифы непонятной кодировки, в местах русского текста.

А чем смотрели?


Breed 3

вот код область текста, причем некоторые части норм, а во многих ерунда с кодировкой
Код
INSERT INTO `b_search_content` VALUES (498,'2010-10-27 12:15:09','iblock','393','s1',0,'=ID=393&EXTERNAL_ID=393&IBLOCK_SECTION_ID=&IBLOCK_TYPE_ID=articles&IBLOCK_ID=21&IBLOCK_CODE=test-drive&IBLOCK_EXTERNAL_ID=&CODE=','Бизон Самый крупный в мире трактор','Компания «Бизон» приступила к   продвижению на   рынок сельхозтехники Ростовской области, Краснодарского и   Ставропольского краев самых больших и   тяжелых тракторов в   мире. Аграриям предлагается сделать ставку на   Челленджер 900-й серии, способный заменить в   поле до   5   обычных тракторов.\r\n\r\nЧелленджер МТ900С предназначен для выполнения сложных сельскохозяйственных работ, является самым большим и   тяжелым среди выпускавшихся когда-либо колесных тракторов. По   замыслу разработчиков (корпорация АГКО, США) машина призвана изменить существующие технологии ведения сельского хозяйства.\r\n\r\nТрактор наделен максимальной мощностью в   600 л.с. Отличается самыми большими БШзнн СаУый ЪрсЯный в УШре траЪтнр\r\nЊнУЯанШя «БШзнн» ЯрШстсЯШла Ъ   ЯрнХвШженШю на   рыннЪ сельхнзтехнШЪШ РнстнвсЪнй нбластШ, ЊрасннХарсЪнвн Ш   СтаврнЯнльсЪнвн Ъраев саУых бнльшШх Ш   тяжелых траЪтнрнв в   УШре. &#1024;врарШяУ ЯреХлавается сХелать ставЪс на



пересоздал резервную копию базы данных, теперь глюк на 80%
Код
Duplicate entry 'без-ru-0.1187-184' for key 'UX_B_SEARCH_CONTENT_STEM'


Код с базы данных с переменной UX_B_SEARCH_CONTENT_STEM
Код
DROP TABLE IF EXISTS `b_search_content_stem`;
CREATE TABLE `b_search_content_stem` (
  `SEARCH_CONTENT_ID` int(11) NOT NULL,
  `LANGUAGE_ID` char(2)  NOT NULL,
  `STEM` varchar(50) CHARACTER SET utf8  NOT NULL,
  `TF` float NOT NULL,
  UNIQUE KEY `UX_B_SEARCH_CONTENT_STEM` (`STEM`,`LANGUAGE_ID`,`TF`,`SEARCH_CONTENT_ID`),
  KEY `IND_B_SEARCH_CONTENT_STEM` (`SEARCH_CONTENT_ID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci DELAY_KEY_WRITE=1;



Причем это с галочкой
"Исключить из архива поисковый индекс (1.2 МБ)"
ответил 29 Сен, 14 от Xenam (160 баллов)
00 голосов
Как вариант - удалить модуль поиска, зачистка таблиц, перенос, установка модуля поиска, переиндексация сайта.
ответил 01 Фев, 15 от Pomnep (13,960 баллов)
00 голосов
Предложу вам простое и элегантное решение проблемы с ошибкой "Duplicate entry for key 'UX_B_SEARCH_CONTENT_STEM'".
Откройте файл /bitrix/modules/search/classes/mysql/search.php. На строках 875, 881, 914, 920 (или других, на которые указывает текст ошибки) должно стоять что-то типа этого:
Код
$DB->Query($strSqlPrefix.substr($strSqlValues, 2), false, "File: ".__FILE__."<br>Line: ".__LINE__);

Эти две строки нужно поправить вот так:
Код
$DB->Query($strSqlPrefix.substr($strSqlValues, 2).' ON DUPLICATE KEY UPDATE LANGUAGE_ID=LANGUAGE_ID', false, "File: ".__FILE__."<br>Line: ".__LINE__);

То бишь, если в таблице уже есть запись, которую поисковый модуль пытается туда запихать, скрипт не будет останавливаться с ошибкой, а запись будет просто проигнорирована.
ответил 15 Май, 15 от Divinil (160 баллов)

Похожие вопросы

0 голосов
0 ответов
0 голосов
5 ответов
0 голосов
7 ответов
спросил 30 Май, 13 от hyorinmar (260 баллов)
0 голосов
3 ответов
спросил 20 Окт, 13 от JIapro (180 баллов)