Empfehlungen: Erweiterte Suche

Firebird und save()

Datenbankobjekte strukturieren und validieren

Firebird und save()

Beitragvon Vinosaurus » Mo 9. Aug 2010, 20:31

Hallo,

ich habe ein Problem mit meiner Datenbank. Aufgrund meiner sonst verwendeten Software verwende ich mit Cakephp einen Firebird 2.01 Server. Es funktioniert auch fast alles.

Das Problem das ich habe betrifft save(). Diese Funktion wird in einem Programmteil zum Teil 50x hintereinander aufgerufen. Dabei erzeugt save() auch die Abfrage "count(*)" vor jedem Update. Dies scheint bei dem Firebird sehr gemächlich zu laufen. Das nachfolgende Update erzeugt dann einen Deadlock Fehler.

Gibt es da eine Stelle wo man etwas dran drehen kann? Viel Ahnung habe ich ja nicht, aber da das ID Feld einen primären Schlüssel hat, kann ja eigentlich nicht mehr als 1 rauskommen???


SELECT COUNT(*) AS "COUNT" FROM "LHUHRZEIT3" "UHRZEIT" WHERE "UHRZEIT"."ID" = '2980'
UPDATE "LHUHRZEIT3" SET "FAHRTNUMMER" = '28l4', "SORTNUM" = '1', "TOUR" = '28', "FAHRZEUG" = 'LKW', "NUMMER" = '2980', "KUNDENNUMMER" = '46440', "LIEFERANSCHRIFT" = 'N', "LANREDE" = '', "LNAME" = '', "LNAME2" = '', "LSTRASSE" = '', "LPLZ" = '', "LORT" = '', "LIEFERHINWEIS1" = '', "LIEFERHINWEIS2" = '', "LIEFERHINWEIS3" = '', "GESAMTFLASCHEN" = '37', "WERT" = '1.75', "ZAHLBETRAG" = '174.600006104', "NAME" = 'Engelhardt', "VORNAME" = 'fdg gfgfg', "ORT" = 'zuztmb', "STRASSE" = 'iouioiozt Weg', "TELPRIV" = '6765756567756', "TELGESCH" = '', "FAX" = '', "SELEKTION" = '', "MINKPS" = '3.20000004768', "MAXKPS" = '6.19999980927', "MITTELPKS" = '4.59999990463', "ZUSATZZEIT" = '00:00:00', "ZEITBISNAECHSTERKUNDE" = '00:09:00', "STARTZEIT" = '07:00:00', "STARTDATUM" = '2010-08-10', "FAXUHRZEIT" = 'am 10.08.2010 zwischen 7:00 und 7:45', "FAXSCHICKEN" = '', "LIEFERZEITFRUEH" = '07:00:00', "LIEFERZEITMITTEL" = '07:00:00', "LIEFERZEITSPAET" = '07:00:00', "WIEVIELTERKUNDE" = '1', "LOESCHFLAG" = '0', "LIEFERDATUM" = '2010-08-10', "PLANLIEFERDATUM" = '2010-08-10', "ANZFLASCHEN" = '992', "ANZAUFTRAEGE" = '24', "FAHRTNAME" = 'gffgh 10.08.2010', "LADEGEWICHT" = '0', "GESCHWINDIGKEITSFAKTOR" = '1', "ZEITPUNKT" = '07:00:00', "ZEITPUNKTFRUEH" = '07:00:00', "ZEITPUNKTSPAET" = '07:45:00', "LIEFERAVIS" = 'N', "TELMOBIL" = '', "KUNDESEIT" = '1999-06-08', "LTELEFON" = '', "PLZ" = '', "LIEFERDATUMDATE" = '2010-08-10', "LKWFAHRER" = '', "LTFAHRER" = 'dfdfd, dfdfdf', "VWBUSFAHRER" = '', "LKW2TERFAHRER" = '', "CREATED" = '2010-08-09 10:04:07', "MODIFIED" = '2010-08-09 20:28:42', "DANACHZUSATZZEIT" = '0', "ANGERUFEN" = '1', "GEMAILT" = '0', "GEFAXT" = '0', "BENACHRICHTIGEN" = '0', "BENACHRICHTIGUNGSTAMP" = NULL, "NEUERSTART" = '1900-01-01', "NEUESTARTZEIT" = '00:00:00', "NEUFRUEH" = '07:00', "NEUMITTEL" = '07:00', "NEUSPAET" = '07:45', "NEULDAT" = '10.08.2010', "ANFAXNUMMER" = NULL, "ANMAILADRESSE" = NULL, "NACHRICHTENTEXT" = NULL, "LIEFERTEXT" = NULL WHERE "LHUHRZEIT3"."ID" = '2980'
Vinosaurus
 
Beiträge: 1
Registriert: Mo 9. Aug 2010, 20:25

Re: Firebird und save()

Beitragvon euromark » Mi 11. Aug 2010, 23:50

manuelle queries
ansonsten hast du immer count()
das liegt daran, dass cake bei save() automatisch prüft ob der eintrag überhaupt existiert - also ein update überhaupt möglich ist, daher dein count(*)
euromark
 
Beiträge: 618
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 2.1
OS: Windows


Zurück zu Models

Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 1 Gast