Баг при миграции

#1 12 сентября 2013 в 19:33
При миграции с версии 1.10.1 на 1.10.2 в записях в универсальном каталоге исчез текст

Кто стакливался с проблемой отзовитесь…
#2 17 сентября 2013 в 12:08
Это все кавычки в записях, см. обсуждение
Для себя я исправил скрипт миграции
заменить это:
  1.  
  2. while($item = $inDB->fetch_assoc($result)){
  3.  
  4. $cfg = @unserialize($item['fieldsdata']);
  5. $config_yaml = ($cfg) ? cmsCore::arrayToYaml($cfg) : "---\n";
  6. $cfg_db = $inDB->escape_string($config_yaml);
  7. $inDB->query("UPDATE cms_uc_items SET fieldsdata='{$cfg_db}' WHERE id='{$item['id']}'");
  8.  
  9. }
  10.  
на это:
  1.  
  2. while($item = $inDB->fetch_assoc($result)){
  3.  
  4. $src = trim($item['fieldsdata']);
  5. $parse_error = false;
  6. $cfg = false;
  7.  
  8. // Detect unserialize Error
  9. if ($src == serialize(false) || @unserialize($src) !== false) {
  10.  
  11. $cfg = @unserialize($src);
  12.  
  13. } else { // unserialize failed. Try manual parse
  14.  
  15. $matches = array();
  16.  
  17. // fildsdata must be Array
  18. if (0 != preg_match( '#^a:(\d+):\{(.*)\}$#ms', $src, $matches)) {
  19.  
  20. $count = intval( $matches[1] ); // Array size
  21. $src = $matches[2]; // Array items
  22.  
  23. $pattern = '#^'.implode( '', array_fill( 0, $count , 'i:\d+;s:\d+:"(.*)";')).'$#ms';
  24. $matches = array();
  25.  
  26. if (0 != preg_match( $pattern, $src, $matches )) {
  27. array_shift( $matches );
  28. $cfg = $matches;
  29. } else {
  30. $parse_error = 'Array fildsdata parse failed. arraysize:'.$count;
  31. }
  32.  
  33. } else {
  34. $parse_error = 'Unknown fieldsdata format';
  35. }
  36.  
  37. }
  38.  
  39. if ($parse_error === false) {
  40.  
  41. $config_yaml = ($cfg) ? cmsCore::arrayToYaml($cfg) : "---\n";
  42. $cfg_db = $inDB->escape_string($config_yaml);
  43. $inDB->query("UPDATE cms_uc_items SET fieldsdata='{$cfg_db}' WHERE id='{$item['id']}'");
  44.  
  45. // echo "Item {$item['id']}: DONE. arraysize: ".count($cfg)." items<br>\n";
  46.  
  47. } else {
  48. // Short error message
  49. echo "Item {$item['id']}: FAIL. ".$parse_error."<br>\n";
  50. // Detailed error message
  51. // echo "Item {$item['id']}: ".$parse_error." <span style='border-bottom:1px dashed black;cursor:pointer;' onclick='document.getElementById(\"uc_item_{$item['id']}\").style.display=\"block\"'>show</span><br>\n";
  52. // echo "<div id='uc_item_{$item['id']}' style='display:none;margin:10px 0;'><textarea style='width:90%;height:10em;'>{$item['fieldsdata']}</textarea></div>\n";
  53. }
  54.  
  55. }
  56.  
#3 17 сентября 2013 в 12:10
Не могу отредактировать пост.
Исправленный скрипт миграции
Прикрепленный файл
indexphp_4abbm.zip 4 Кб
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.