Что за Х или мигрируем контент с D6 на D7&

Главные вкладки

Аватар пользователя dcdr dcdr 4 января 2014 в 18:54

Доброго времени суток!
Никто не сталкивался с причудами при миграции с 6 на 7 версию, когда аватарки пользователей и остальные филды мигрируются нормально, а 'image' пишется в таблицу "file_managed", но не в порядке автоинкремента, а поверх уже существующих записей?

На скрине пример, в 317 fid после миграции вместо автара перезаписался совсем другой файл((

ВложениеРазмер
Иконка изображения screen3.jpg372.58 КБ

Комментарии

Аватар пользователя dcdr dcdr 4 января 2014 в 19:38

RxB wrote:
Апгдейд делался нон-стоп или были затыки и возобновлялся заново?
Думаю, что было второе.
Я бы ещё проверил наличие уникального ключа в fm, наверняка нет

в fm fid первичный(он же уникальный), uri уникальный
как таковых затыков не было, в том-то и трабл.

Аватар пользователя dcdr dcdr 5 января 2014 в 18:47

RxB wrote:
Апгдейд делался нон-стоп или были затыки и возобновлялся заново?
Думаю, что было второе.
Я бы ещё проверил наличие уникального ключа в fm, наверняка нет

Боюсь трабл скорее всего в логике. Не понимаю, как мигрируются сначала аватарки юзеров, а затем в ту же таблицу с такими же id подгружаются другие cck поля. Это же пихаос
// Insert into the file_managed table.
// Each fid should only be stored once in file_managed.
db_merge('file_managed')
->key(array(
'fid' => $file->fid,
))
->fields(array(
'uid' => $file->uid,
'filename' => $file->filename,
'uri' => $file->uri,
'filemime' => $file->filemime,
'filesize' => $file->filesize,
'status' => $file->status,
'timestamp' => $file->timestamp,
))
->execute();

Аватар пользователя V I R U S V I R U S 4 января 2014 в 19:30

А кто вам сказал, что то, что вы подчеркнули должно быть идентичным? FID это всего лишь идентификатор номера файла. Идите в таблицу users, там будет поле picture. Вот число которое там будет написано ссылается на FID в таблице files_managed.

Аватар пользователя dcdr dcdr 4 января 2014 в 19:42

V I R U S wrote:
А кто вам сказал, что то, что вы подчеркнули должно быть идентичным? FID это всего лишь идентификатор номера файла. Идите в таблицу users, там будет поле picture. Вот число которое там будет написано ссылается на FID в таблице files_managed.

нам сказал это поле picture из таблицы users: Foreign key: file_managed.fid of user’s picture.

Аватар пользователя V I R U S V I R U S 4 января 2014 в 19:53

dcdr,
увы и ах, но там нигде не сказано что значения всех трёх полей в files_managed должно быть идентичным. Вернее сказать что таблица files_managed указывает просто на присвоенный файл по принципу users(f: picture) -> files_managed(f: fid) = FILE.

Ах, да, вы видимо забыли суть того, что в files_managed хранятся не только аватарки пользователей, но и вообще все залитые файлы через поле file/image. Соответственно добиться идентичности во всех трёх полях просто невозможно. Загляните ещё в таблицу files_usage, возможно это поможет вам решить проблему.

Аватар пользователя dcdr dcdr 4 января 2014 в 20:19

V I R U S wrote:
dcdr,
увы и ах, но там нигде не сказано что значения всех трёх полей в files_managed должно быть идентичным. Вернее сказать что таблица files_managed указывает просто на присвоенный файл по принципу users(f: picture) -> files_managed(f: fid) = FILE.

Ах, да, вы видимо забыли суть того, что в files_managed хранятся не только аватарки пользователей, но и вообще все залитые файлы через поле file/image. Соответственно добиться идентичности во всех трёх полях просто невозможно. Загляните ещё в таблицу files_usage, возможно это поможет вам решить проблему.


Да ну! Если перед миграцией в полях этой записи прописана аватарка, а миграция перезаписывает запись другим файлом, files_usage вряд ли поможетX-(
Выше есть скрин до миграции, там четко видно кто есть ху