Projekt

Obecné

Profil

Chyba #402

uzavřený

Technici zařízení - chyba během přidávání zařízení

Přidáno uživatelem Ondřej Fibich před více než 11 roky(ů). Aktualizováno před více než 10 roky(ů).

Stav:
Uzavřený
Priorita:
Urgentní
Přiřazeno:
-
Kategorie:
-
Cílová verze:
Začátek:
2012-10-25
Uzavřít do:
% Hotovo:

0%

Odhadovaná doba:

Popis

!!! Nutno opravit v 1.0 větvi !!!

2012-10-25 8:44:06 -- error: Chyba transakce: Chyba v SQL dotazu - Cannot add or update a child row: a foreign key constraint fails (`freenetis`.`device_engineers`, CONSTRAINT `device_engineers_ibfk_2` FOREIGN KEY (`device_id`) REFERENCES `devices` (`id`) ON DELETE CASCADE) v souboru /var/www/freenetis/system/libraries/drivers/Database/Mysql.php na řádku 374 - 
Zásobník #0 /var/www/freenetis/system/libraries/drivers/Database/Mysql.php(99): Mysql_Result->__construct(false, Resource id #30, true, 'INSERT INTO `de...')
#1 /var/www/freenetis/system/libraries/Database.php(187): Database_Mysql_Driver->query('INSERT INTO `de...')
#2 /var/www/freenetis/system/libraries/Database.php(890): Database->query('INSERT INTO `de...')
#3 /var/www/freenetis/system/libraries/ORM.php(787): Database->insert('device_engineer...', Array)
#4 /var/www/freenetis/application/controllers/devices.php(987): ORM_Core->save()
#5 /var/www/freenetis/system/core/Kohana.php(330): Devices_Controller->add('1248')
#6 [internal function]: Kohana::instance()
#7 /var/www/freenetis/system/core/Event.php(217): call_user_func(Array)
#8 /var/www/freenetis/system/core/Bootstrap.php(55): Event::run('system.execute')
#9 /var/www/freenetis/index.php(86): require('/var/www/freene...')
#10 {main}   URL: cs/devices/add/1248?path_qsurl=devices%2Fshow_by_user%2F1248

2012-10-25 10:22:42 -- error: Chyba transakce: Chyba v SQL dotazu - Cannot add or update a child row: a foreign key constraint fails (`freenetis`.`device_engineers`, CONSTRAINT `device_engineers_ibfk_2` FOREIGN KEY (`device_id`) REFERENCES `devices` (`id`) ON DELETE CASCADE) v souboru /var/www/freenetis/system/libraries/drivers/Database/Mysql.php na řádku 374 - 
Zásobník #0 /var/www/freenetis/system/libraries/drivers/Database/Mysql.php(99): Mysql_Result->__construct(false, Resource id #30, true, 'INSERT INTO `de...')
#1 /var/www/freenetis/system/libraries/Database.php(187): Database_Mysql_Driver->query('INSERT INTO `de...')
#2 /var/www/freenetis/system/libraries/Database.php(890): Database->query('INSERT INTO `de...')
#3 /var/www/freenetis/system/libraries/ORM.php(787): Database->insert('device_engineer...', Array)
#4 /var/www/freenetis/application/controllers/devices.php(987): ORM_Core->save()
#5 /var/www/freenetis/system/core/Kohana.php(330): Devices_Controller->add('267')
#6 [internal function]: Kohana::instance()
#7 /var/www/freenetis/system/core/Event.php(217): call_user_func(Array)
#8 /var/www/freenetis/system/core/Bootstrap.php(55): Event::run('system.execute')
#9 /var/www/freenetis/index.php(86): require('/var/www/freene...')
#10 {main}   URL: cs/devices/add/267?path_qsurl=devices%2Fshow_by_user%2F267

Aktualizováno uživatelem Ondřej Fibich před více než 11 roky(ů)

  • Priorita změněn z Normální na Urgentní
  • Cílová verze nastaven na 1.1

Aktualizováno uživatelem Michal Kliment před více než 11 roky(ů)

Nejde spíš o techniky zařízení než o správce?

Aktualizováno uživatelem Ondřej Fibich před více než 11 roky(ů)

  • Předmět změněn z Správci zařízení - chyba během přidávání zařízení na Technici zařízení - chyba během přidávání zařízení

Aktualizováno uživatelem Ondřej Fibich před více než 11 roky(ů)

+1 :-)

Aktualizováno uživatelem Michal Kliment před více než 11 roky(ů)

Je to nějaké divné. Dotaz na ostré DB:

select * from device_engineers where device_id not in (select id from devices)

MySQL vrátil prázdný výsledek (tj. nulový počet řádků). ( dotaz trval 0.0003 sekund )

Asi další problém s transakcí?

Aktualizováno uživatelem Ondřej Fibich před více než 11 roky(ů)

Chyba v implementaci ORM, pokud se nepodari ulozit zaznam, neni automaticky nastavena hodnota loaded na false. Normalne se to neprojevi, jelikoz nic neukladas nekolikrat v cyklu, coz ale je nyni delano u transakci. Scenar, kdy se to stane:

mam objekty X, Y (Y obsahuje referenci na Y) a provedu:
1) X.save --> OK
2) Y.save --> exception
pak tedy roolbacknu a udelam znovu:
1) X.save --> neulozeno, ale chyba se nevygeneruje, jelikoz loaded je nastaveno s predchozi transakce.
2) Y.save --> exception (chybna reference na X)

V ostre verzi se neodvazuji opravovat ORM, proto od nynejska kazdy cyklus musi v sobe obsahovat inicializaci modelu (clear nestaci) a tim bude zajistena spravna hodnota loaded.

Toto samozrejme neni reseni vyse zminene chyby, jen duvod proc ta jeji interpretace je "divna". Az opravim "loaded problem" uvidime co chybu zpusobuje.

Aktualizováno uživatelem Ondřej Fibich před více než 11 roky(ů)

  • Stav změněn z Nový na Uzavřený

Chyba se již po změnách v přidávání zařízení neprojevila -> uzavírám.

Také k dispozici: Atom PDF