unserialize error offset – při přihlašování

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
ondrusu
Člen | 118
+
0
-

Ahoj, mám takový dotaz. ZDE scren jedné chyby.

unserialize() Error at offset 1314 of 1315 bytes.

Děje se to občas když se chci přihlásit, ale né uplně po každé.
Objeví se tahle chyba, refreshnu stránku a znova se přihlásím a vše je ok.
Nevíte proč se to může nastávat tahle chyba??

CZechBoY
Člen | 3608
+
+1
-

Bez serializačního kodu asi ne. Nemáš krátkej sloupec v databázi třeba?

ondrusu
Člen | 118
+
0
-

jasně, tak jsem si to dal do tracy, zde je obrázek z texťáku co všechno to unserializuje.
Snad to pomůže, možná ten první řádek je moc velký na tu unserializaci… Díky za případnou odpověď

CZechBoY
Člen | 3608
+
0
-

A ta db? Je sloupec dostatecne velky?

ondrusu
Člen | 118
+
0
-

to předpokládám že asi nějakou lepší chybu né??
Tady ještě jednou ta chyba co jsem zachitil:

ErrorException #098
message protected => "unserialize(): Error at offset 1313 of 1314 bytes"
string private => ""
code protected => 0
file protected => "/var/www/html/vendor/kdyby/doctrine/src/Kdyby/Doctrine/Entities/SerializableMixin.php"
line protected => 98
trace private => array (20)
previous private => NULL
severity protected => 8
context => array (2)
object => App\Model\Entities\UserAttribute #01
id protected => NULL
edited protected => NULL
edited_by protected => NULL
user protected => NULL
user_attribute_param protected => NULL
user_attribute_type protected => NULL
serialized => "a:6:{s:2:"id";i:1;s:6:"edited";N;s:9:"edited_by";N;s:4:"user";r:22;s:20:"user_attribute_param";C:65:"Kdyby\\GeneratedProxy\\__CG__\\App\\Model\\Entities\\Us ... "
skippable => TRUE
iguana007
Člen | 970
+
0
-

Navrhuji, aby si odpověděl na 2× položený dotaz od @CZechBoY , jinak se asi dále nepohneme :)
Tj. když si dumpneš velikost dat, co se tam snažíš uložit, tak je sloupec v databázi (serialized?), kde tato data ukládáš, dostatečně velký na to, aby tato data pobral? Není třeba jej zvětšit, či změnit jeho typ na něco jiného?

ondrusu
Člen | 118
+
0
-

Ono se tam ukládá jen login info a to proběhlo OK, a tady ta chyba s tou serializací někdy se zobrazí někdy přihlášení proběhne ok.
Ono to skončí až když se provádí SQL dotaz na user_attribute_type , které se načítají do entity User.
Mám user_attribute a user_attribute_typeuser_attribute_param

V user_attribute_type jsou data ve tvaru

name: LANG
validation: {"field": "select", "name": "lang", "class": "form-control"}
active: 1

Myslíte že může dělat problémy ten JSON?

  • tak tím to bohužel není, ta hláška se zobrazuje jakmile promažu cache

Editoval ondrusu (12. 4. 2016 21:50)

ondrusu
Člen | 118
+
0
-

Tak bádáním a výzkumem jsem zjistil, že mi doctrine nenačte další entity.
Mám tabulky user_atributte, user_attribute_type, user_attribute_param.

  • *_type jsou typy atributů (lang, theme apod.)
  • *_param jsou parametry typů (en, cs, square apod.)

a tabulka user_attribute to dává dohromady (uživatel ten a ten má atrbibut LANG a hodnotu CS)

class UserAttribute extends BaseEntity {

    /**
     * Sloupec pro ID atributu uživatele.
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue
     */
    protected $id;

    /**
     * Sloupec s datem editace daného atributu.
     * @ORM\Column(type="datetime")
     */
    protected $edited;

    /**
     * Sloupec s ID uživatele, který editoval hodnotu daného atributu.
     * @ORM\Column(type="integer")
     */
    protected $edited_by;

    /* ------------------------- Association Mapping ------------------------ */

    /**
     * Namapovaná vazba nastavení účtu uživatele (UserAttribute)N:1(User) na tabulku uživatelů.
     * @ORM\ManyToOne(targetEntity="User", inversedBy="ac_user_attribute")
     * @ORM\JoinColumn(name="user_id")
     *
     * @var User
     */
    protected $user;

    /**
     * Namapovaná vazba nastavení účtu uživatele (UserAttribute)N:1(UserAttributeType) na tabulku Uživatelských Typů Atributu.
     * @ORM\ManyToOne(targetEntity="UserAttributeParam", inversedBy="ac_user_attribute", fetch="EAGER")
     * @ORM\JoinColumn(name="param_id")
     */
    protected $user_attribute_param;


    /**
     * Namapovaná vazba nastavení účtu uživatele (UserAttribute)N:1(UserAttributeType) na tabulku Uživatelských Typů Atributu.
     * @ORM\ManyToOne(targetEntity="UserAttributeType", inversedBy="ac_user_attribute", fetch="EAGER")
     * @ORM\JoinColumn(name="type_id")
     */

    protected $user_attribute_type;

}

a Entita uživatelů

class User extends BaseEntity {
.
.
    /**
     * Namapovaná vazba uživatele 1:N na tabulku s nastavením účtu uživatele.
     * @ORM\OneToMany(targetEntity="UserAttribute", mappedBy="user")
     */
    protected $ac_user_attribute;

    /* --------------------------- Entity Methods --------------------------- */

    /** Konstruktor s inicializací objektů pro vazby mezi entitami. */
    public function __construct() {
        parent::__construct();
        $this->ac_login_info = new ArrayCollection();
        $this->ac_user_attribute = new ArrayCollection();
    }

User entita má načíst atributy uživatele, atributy uživatele by měli načíst svoje parametry a typy. Ale bohužel parametry ani typy už se nenačtou (když smažu cache tak to hlásí tu chybu s unserialize ale pak to je ok)
Jak má tedy ten vzah vypadat? Co mám špatně na té entitě pro user attribute??