Lander, если вы используете данные в формате JSON из базы данных, то теперь они прилетают оттуда не в виде строки, что потом требуется делать JSON::decode, а сразу ввиду массива.
Так то удобная штука, конечно, если конечно вы не попытаетесь обновить уже существующий огромный проект, как это сделали мы и все рухнуло.
Lander, не помогает. прикол в том, что фича - включена по умолчанию. а где и как ее выключить - чет забыли написать. Собственно поэтому я и задал вопрос здесь ))
Lander, я нашел только в /yii/db/mysql/ColumnSchema.php параметр disableJsonSupport , но указание данной настройки в конфигах выдает ошибку что такого параметра не существует, а задание втупую прям в файле на = true не меняет ничего.
Вячеслав, так это надо alterColumn в миграции сделать для поля, что хранит json, и добавить этот параметр со значением true. Это не для конфига параметр. Что-то типа
OKyJIucT, где вы об этом прочитали? у меня достаточно много таблиц которые хранят JSON, мне теперь везде придется делать? чет не очень приколы. в таком случае лучше сидеть на 2.0.13. слава богу бэкапы ежедневно делаются))
этот файл отвечает за структуру таблиц, в нем вы нашли этот параметр, и поменять его можно попробовать указанным мной способом. Я не пробовал, но по идее должно сработать.
OKyJIucT, не, это все не то. Sam написал в комментариях что они сделали возможность отключить эту "крутую вещь", но где и как это сделать - я так и не нашел. а все что я написал выше - лишь потуги быстро исправить ситуацию. которая до сих пор остается аховой. проект лежит. разворот проекта из бэкапа ситуацию не решил.
OKyJIucT, так я вам про это же и написал вышеееее :)
даунгрейд до 2.0.13 выдает теперь следующую ошибку:
yii\db\ActiveRecord::populateRecord(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "yii\db\mysql\ColumnSchema" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition
Вячеслав, это выдает в момент обновления через композер или после успешного обновления? Может попробовать удалить целиком папку vendor и заново все установить? Хотя может апдейт поменял схему ДБ и надо ее структуру восстанавливать, а не файлы.
OKyJIucT, да всяко уже пробовали. и даунгрейд до 2.0.13 выдает эту ошибку и замена папки вендор.
в общем пришлось обновиться до 2.0.14
зайти в файл /vendor/yiisoft/yii2/db/mysql/ColumnSchema.php
и установить вручную public $disableJsonSupport = true;
затем сбросить кэш enableSchemaCache в конфигах и после этого все пришло в норму
правда пока была включена эта опция, сайт из 1С подтянул в себя криво данные JSON поэтому приходится сейчас все вычищать ручками
в очередной раз повторюсь - разработчики просто огонь!
впредь буду намного вдуманней обновляться. Впервые такой прикол, если честно, поэтому даже не задумываясь обновился.
Зайти в файл /vendor/yiisoft/yii2/db/mysql/ColumnSchema.php
установить вручную public $disableJsonSupport = true;
затем сбросить кэш enableSchemaCache в конфигах, если таковой установлен.
slo_nik, когда проект лежит и заказы с сайта, который имеет оборот 15 миллионов в день, не поступают уже 2 часа, но нигде нет ни слова о том, как поправить сложившуюся ситуацию - вы считаете что поправить что-то во фрейме не лучшая идея?))
Да, изначально эт наш косяк, что обновились неглядя. Но кто бы мог подумать, что миграция с 0.13 до 0.14 версии будет столь болезненная.
Вдруг кому-то поможет эта запись, ибо 3 часа назад я был бы очень рад ее найти, это избавило бы меня от 2х часового головняка.
slo_nik, если же у вас есть что ответить по теме и подсказать как отключить данную возможность не в самом фреймворке - я скажу вам огромное спасибо :)) но пока даже один из разработчиков молчит, не отвечает.
Александр Макаров, в том и дело, что я прочитал лог на основном сайте и там ни слова про то, что формат данных, который прилетает из базы будет автоматически decode
там лишь написано что добавлена поддержка json, что в моем понимании никак не возвращаемый автоматически формат данных ввиде массива =)
Enh #7640: Implemented custom data types support. Added JSON support for MySQL and PostgreSQL, array support for PostgreSQL (silverfire, cebe)
ЗЫ за ссылку спасибо, там есть вариант решения без вмешательства во фреймворк, завтра поправлюсь.