Перейти к содержимому


Синхронизация не синхронизирует по полю id


Сообщений в теме: 37

#1 Андрей Гуляев

    Активный участник

  • Пользователи
  • PipPipPip
  • 94 сообщений
  • Пол:Мужчина

Отправлено 08 Май 2013 - 12:00

Синхронизация не синхронизирует по полю id по крайней мере мне так ответили в поддержке, это верно? Зачем тогда эта чудо функция? А как же поля связи? Они же именно по id работают если мне допустим нужно синхронизировать две таблице которые связаны полем связь, это же не возможно, так как они разваляться по тому что id в базах не будут совпадать. Очень странно работает синхронизация, в каком случае она полезна я не понял.

#2 Гость_Roman_*

  • Гости

Отправлено 08 Май 2013 - 13:04

Вы не совсем правильно поняли. Не рекомендуется к синхронизации поле ID на загрузку данных, так как это поле является уникальным и может при синхронизации повторится, что вызовет ошибку. Если Вам необходимо засинхронизировать таблицы с полями связи, то в данном случае Вы просто синхронизируете необходимые поля в этих таблицах, синхронизация сама сопоставит все данные и несмотря на то, что ID в записях будут различаться, при изначально корректной синхронизации всё будет работать.

#3 Андрей Гуляев

    Активный участник

  • Пользователи
  • PipPipPip
  • 94 сообщений
  • Пол:Мужчина

Отправлено 08 Май 2013 - 21:49

Мне уже так сделали все связи перепутались, получился полный бред, как же тогда переносить данные? Импорт экспорт то же не все может, я все в phpmyadmin как всегда перенесу, но вот с файлами проблема там как то все по хитрому, вот по этому и хотел через синхронизацию, ведь при импорте можно же явно писать в нужные id почему этого не позволяет синхронизация? Просто жесткая перезапись это возможно?

#4 Андрей Гуляев

    Активный участник

  • Пользователи
  • PipPipPip
  • 94 сообщений
  • Пол:Мужчина

Отправлено 09 Май 2013 - 12:22

У меня есть задача колонировать таблицу из одной базы в другую, они почти одинаковые и есть поле файл, общий объем файлов 4 гб как это сделать? Каким же образм скопировать, допустим данные можно скопировать через phpmyadmin но как быть с файлами? Это вообще возможно хоть каким нибудь извращенным методом. Самое важно что в таблице id и остальные данные должни совпадать с копией. Иначе не возможно будет восстановить все связи.

#5 Гость_Roman_*

  • Гости

Отправлено 11 Май 2013 - 10:39

Запись поля ID корректно пройдёт, если та таблица, в которую пойдёт выгрузка данных, абсолютно пустая. Вообще, довольно странно, что связи порушились. синхронизация без поля ID должна корректно сопоставлять данные. Файлы тоже синхронизируются, просто необходимо добавить необходимое поле в список.

#6 Андрей Гуляев

    Активный участник

  • Пользователи
  • PipPipPip
  • 94 сообщений
  • Пол:Мужчина

Отправлено 13 Май 2013 - 02:50

Спасибо вам за ответ, попробовал удалить всё в таблице через phpmyadmin и действительно получилось. Далее начал вникать почему дело не пошло. Начинаю медленно разгадывать механизм. Есть такие поля в талицах dataXX где поля R U S. R - так пока и не понял, Если U=0 то синхронизация строки возможна. S это номер синхронизации. Так понял после того как я изменил поле ваш скрипт ставит u=1 после чего записать в него синхронизацией не возможно? Все праздники сидел и пытался понять, отдохнул на славу! Запустил около 20 копий программы, смотрел разные конфигурации, запустил под это 4 OPENVZ контейнера. Реально мало информации о стрeтуре базы данных и механизмах скрипта. Синхронизацию да же на форуме не обсуждали. А мне просто нужно было клонировать таблицу. Сделайте плиз многоподчиненность таблиц и не забудьте что это повлечет изменения в работе группы 777. Она мне нужна но я не могу её использовать так как показывать клиентам подчиненную таблицу база не хочет. А мне нужно показать всего 1 таблицу и она подчиненная.

#7 Андрей Гуляев

    Активный участник

  • Пользователи
  • PipPipPip
  • 94 сообщений
  • Пол:Мужчина

Отправлено 13 Май 2013 - 03:45

И все равно потерял 30% данных, это много. Как заставить синхронизацию тупо копировать как есть без примудростей? id-id и поехали дальше.

#8 Гость_Roman_*

  • Гости

Отправлено 13 Май 2013 - 08:26

u - это флаг изменённой записи, r - флаг новой записи. Данные флаги нужны только для формирования напоминаний, на работу синхронизации они не влияют. В поле s хранится идентификатор записи пассивной программы. Поэтому синхронизировать id нет необходимости.

#9 Андрей Гуляев

    Активный участник

  • Пользователи
  • PipPipPip
  • 94 сообщений
  • Пол:Мужчина

Отправлено 13 Май 2013 - 13:29

ID заявки: 2249 нужно открыть заявку. Там есть описание проблемы логины и пароли. Посмотрите почему же не все данные синхронизируются. Это видно по общим суммам заказов, Всё настроил правильно. В чем же проблема?

#10 Гость_Roman_*

  • Гости

Отправлено 13 Май 2013 - 13:56

Насколько мне было видно по таблице "Заказы", у Вас не синхронизированы только три последних записи. Из этого можно сделать вывод, что при их добавлении была какая-либо ошибка. Возможно, при обработке файла синхронизации было превышение какого-либо лимита (времени, памяти), поэтому последние строки не добавились. В качестве рекомендации могу посоветовать первичную синхронизацию производить отдельными таблицами, т.е. постепенно отключать и включать нужные поля.

#11 Андрей Гуляев

    Активный участник

  • Пользователи
  • PipPipPip
  • 94 сообщений
  • Пол:Мужчина

Отправлено 13 Май 2013 - 14:17

у меня нет ограничений, например таймаут времени выполнения скрипта 8,3 мин, там космические ограничения, я специально в этом контейнере их почти снял, всё равно не работает. Памяти выделено 3 гб. Что еще можно сделать?

#12 Гость_Roman_*

  • Гости

Отправлено 13 Май 2013 - 14:25

После первичной синхронизации можно проверить лог задания Cron "Синхронизация", возможно, там будут какие-то ошибки.

#13 Андрей Гуляев

    Активный участник

  • Пользователи
  • PipPipPip
  • 94 сообщений
  • Пол:Мужчина

Отправлено 13 Май 2013 - 14:54

Выполнил полную синхронизацию, первая база создала кучу файлов вторая их скушала. ВСЕ. С CRON нашел ошибку.
2013-05-13 15:49:59 - 0 added, 0 updated, 0 deleted, 0 sync id updated
2013-05-13 15:48:02 - Task terminated
Ошибка системы.
Error generated:
/var/www/soundfon/include/functions_cron.php(4570) : sql_query()
/var/www/soundfon/cron.php(60) : eval()'d code(1) : sync_data()
/var/www/soundfon/cron.php(60) : eval()
Ошибка SQL запроса: INSERT INTO `cb_data91` (`user_id`,`add_time`,`status`,`f861`,`f871`,`f881`,`f891`,`f901`,`f911`,`f921`,`f931`,`f1611`,`f1601`,`id`,`r`,`s11`) VALUES ('1','2013-02-09 17:41:03','0','Приход','Платеж клиента','2013-02-09 00:00:00','1','61','11000.00','08.02.2013 21:22 11 000,00 Перевод от 410011406100460','','Получена оплата, 09.02.2013 17:49','0','656','1','S')
Duplicate entry '656' for key 'PRIMARY'

2013-05-13 15:47:03 - 0 added, 0 updated, 0 deleted, 0 sync id updated
Что это за ошибка?
Могу дать доступ к phpmyadmin могу к ssh снимки делаю каждый 1 час по этому не бойтесь всё сломать. Я восстановлюсь со снимка.

#14 Гость_Roman_*

  • Гости

Отправлено 13 Май 2013 - 14:58

Это как раз то, о чём я говорил, почему не стоит синхронизировать ID.
Duplicate entry '656' for key 'PRIMARY'
ID 656 уже есть в таблице, поэтому новая запись не может быть добавлена. Хоть в данном запросе и нет поля ID, но есть позиция автоинкримента, которая совпала с уже добавленной строкой.

#15 Андрей Гуляев

    Активный участник

  • Пользователи
  • PipPipPip
  • 94 сообщений
  • Пол:Мужчина

Отправлено 13 Май 2013 - 15:36

Если в mysql отключитьAUTO_INCREMENT поля id в нужной таблице, синхронизация будет работать?

#16 Андрей Гуляев

    Активный участник

  • Пользователи
  • PipPipPip
  • 94 сообщений
  • Пол:Мужчина

Отправлено 13 Май 2013 - 15:41

Я уверяю вас я пробовал всё синхронизировать без поля id, сделал поля номер, заполнил их вычислением из поля id. Так сделал во всех таблицах. У меня просто в хаос всё развалилось, прямо не собираемо. Именно по этому я подвязываюсь к id. Уже 2 недели пытаюсь клонировать базу каждый день по 7 часов на это трачу. Мне просто нужно клонировать таблицу)

#17 Гость_Roman_*

  • Гости

Отправлено 13 Май 2013 - 15:54

Отключение автоинкримента может сказаться на работоспособности таблицы в целом. По заявке я Вам настривал синхронизацию без ID и первичная синхронизация показала верное количество записей в таблицах и на первый взгляд все связи были корректны. Проблема имеенно при первичной синхронизации или возникает в работе?

#18 Андрей Гуляев

    Активный участник

  • Пользователи
  • PipPipPip
  • 94 сообщений
  • Пол:Мужчина

Отправлено 13 Май 2013 - 16:25

Проблема именно при первичной, так она успешно добаляет поля. Но первичная кудато частенько теряет часть данных. Хотя при если в первой базе поменять поле, во второй уже не факт что оно измениться, Файлы синхронизируетья при первичной синхронизации но обычно 10-12 из 7000 теряет. Это не критично я и руками смогу это не так много. Как бы заставить синхронизацию всё принудительно перезаписывать независимо от того есть такие поля или нет. я так понимаю всё сидит тут functions1.php может там что-то можно подправить под мои нужды?

#19 Гость_Roman_*

  • Гости

Отправлено 13 Май 2013 - 16:50

Давайте попробуем ещё раз синхронизировать данные. Я так понимаю, во второй программе можно делать любые действия?

#20 Андрей Гуляев

    Активный участник

  • Пользователи
  • PipPipPip
  • 94 сообщений
  • Пол:Мужчина

Отправлено 13 Май 2013 - 17:04

Да с адресом ***/soundfon/ любые действия





Количество пользователей, читающих эту тему: 4

0 пользователей, 4 гостей, 0 анонимных