php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 07-07-2010, 12:03
joextra
 Registrierter Benutzer
Links : Onlinestatus : joextra ist offline
Registriert seit: Jul 2005
Beiträge: 260
joextra ist zur Zeit noch ein unbeschriebenes Blatt
Standard datenverlust durch mysqli?

hallo,

ich habe vor einiger zeit in meinen scripts von mysql auf mysqli funktionssatz gewechselt. läuft auch alles prima. allerdings sind jetzt doch ab und zu datenverluste aufgetreten bei der tabelle wo ein insert durchgeführt wurde. dies passiert zwar selten, aber dann doch sehr ärgerlich. jetzt frage ich mich ob das an mysqli liegt. hat jemand ähnliche probleme festgestellt?

noch eine sache. ich mache vor insert & update ein "LOCK TABLES `$table` WRITE" und danach ein "UNLOCK TABLES;". aber daran könnte es ja wohl nicht liegen, oder?
__________________
Erfahrungen vererben sich nicht jeder muss sie allein machen.
Mit Zitat antworten
  #2 (permalink)  
Alt 07-07-2010, 12:20
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

garantieren kann ich es dir nicht, aber ich bin sicher, das hat nichts miteinander zu tun. Protokolliere jedes Fehlverhalten mit allem drum und dran, dann sollte sich irgendwann eine reproduzierbare Ursache herauskristallisieren.

*move* ins SQL-Forum.

Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #3 (permalink)  
Alt 07-07-2010, 12:47
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Wieso blockierst du die Tabelle überhaupt? Was machst du da genau in den INSERTs und UPDATEs?

MySQL :: MySQL 5.0 Reference Manual :: 12.3.5.1 Interaction of Table Locking and Transactions
Mit Zitat antworten
  #4 (permalink)  
Alt 07-07-2010, 13:16
joextra
 Registrierter Benutzer
Links : Onlinestatus : joextra ist offline
Registriert seit: Jul 2005
Beiträge: 260
joextra ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@Amica
ich protokoliere welche aktionen der user macht. und es passiert eben hauptsächlich beim insert.

@onemorenerd
ich denke das es sicherer ist. ist es nicht so das dann die inserts nach ein ander ausgeführt werden? oder habe ich das falsch verstanden.

ein typischer insert bei mir sieht z.b. so aus:
Code:
SQL = LOCK TABLES `tabelle` WRITE
SQL = insert into tabelle (sortID, date, shortText1, shortText2, longText1, activity) values ('8', '1278453600', 'test', 'test', 'test', '1')
SQL = UNLOCK TABLES;
also ganz normal
__________________
Erfahrungen vererben sich nicht jeder muss sie allein machen.
Mit Zitat antworten
  #5 (permalink)  
Alt 07-07-2010, 14:01
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von joextra Beitrag anzeigen
ein typischer insert bei mir sieht z.b. so aus
Dann ist das Locking komplett überflüssig, da dieses eine Insert in sich selbst atomar ist und auch keine anderen Tabellen beeinflusst, es sei denn, du hast noch irgendwelche Trigger gesetzt.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #6 (permalink)  
Alt 07-07-2010, 15:19
joextra
 Registrierter Benutzer
Links : Onlinestatus : joextra ist offline
Registriert seit: Jul 2005
Beiträge: 260
joextra ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ne, trigger benutze ich nicht. dann kann ich das "locken" also weg machen. trotzdem frage ich mich wie es zu diesem datenverlust kommen kann.
__________________
Erfahrungen vererben sich nicht jeder muss sie allein machen.
Mit Zitat antworten
  #7 (permalink)  
Alt 09-07-2010, 11:07
ThemBones
 Registrierter Benutzer
Links : Onlinestatus : ThemBones ist offline
Registriert seit: Nov 2005
Beiträge: 131
ThemBones ist zur Zeit noch ein unbeschriebenes Blatt
Standard Hallo

Hi,
was genau meinst du mit Datenverlust? Ganze Sätze? Oder korrumpierte Daten in einzelnen Spalten in einzelnen Sätzen? etc.
Mit Zitat antworten
  #8 (permalink)  
Alt 10-07-2010, 17:20
joextra
 Registrierter Benutzer
Links : Onlinestatus : joextra ist offline
Registriert seit: Jul 2005
Beiträge: 260
joextra ist zur Zeit noch ein unbeschriebenes Blatt
Standard

die tabelle, in der zb. ein insert durchgeführt wurde, war auf ein mal leer (nur der letzte datensatz der eingetragen/geendert wurde war noch drin). das problem habe ich bis jetzt bei 3 verschiedenen projekten bei unterschiedlichen hostern.
auf meinem localhost (win7, entwicklungsrechner) hatte ich das problem noch nicht
__________________
Erfahrungen vererben sich nicht jeder muss sie allein machen.
Mit Zitat antworten
  #9 (permalink)  
Alt 10-07-2010, 17:37
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Zitat:
die tabelle, in der zb. ein insert durchgeführt wurde, war auf ein mal leer
Werden z.B. zum löschen Links verwendet?
Und hat eine SUMA evtl. die Seite gefunden?
Und dann auf allen Links rumgetrampelt?
__________________
Wir werden alle sterben
Mit Zitat antworten
  #10 (permalink)  
Alt 10-07-2010, 18:44
joextra
 Registrierter Benutzer
Links : Onlinestatus : joextra ist offline
Registriert seit: Jul 2005
Beiträge: 260
joextra ist zur Zeit noch ein unbeschriebenes Blatt
Standard

1. um ins backend zu gelangen, muss man sich erst einloggen. ohne einloggen kann man keine aktion ausführen. wenn man ohne eingeloggt zu sein, einen link ausführt, landet man direkt auf die login seite.
2. das backend ist für suchmaschinen(bots) gesperrt.
3. es wurde ein insert bzw. update durchgeführt, aber KEIN delete.
4. problem ist passiert wenn ein "mensch" etwas geinsert oder geupdatet hatte. da ich die aktionen mittracke, kann ich auch ausschließen das jemand absichtlich die ganzen daten gelöscht hat.
also kann ich das ausschließen
__________________
Erfahrungen vererben sich nicht jeder muss sie allein machen.
Mit Zitat antworten
  #11 (permalink)  
Alt 10-07-2010, 18:56
ThemBones
 Registrierter Benutzer
Links : Onlinestatus : ThemBones ist offline
Registriert seit: Nov 2005
Beiträge: 131
ThemBones ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hm, also ich kann mir beim besten willen nicht vorstellen dass das irgendwas mit mysqli zu tun hat. kannst bugs ausschliessen? kann man ja eigentlich nie. hatte letzthin was aehnliches u nach stundenlanger suche stellte sich raus, ich hab das where vergessen. peinlich peinlich. handelts sich um sehr grosse datenmengen? welche storage engine? immer die gleiche mysql version bei den versch hostern?
Mit Zitat antworten
  #12 (permalink)  
Alt 11-07-2010, 11:04
joextra
 Registrierter Benutzer
Links : Onlinestatus : joextra ist offline
Registriert seit: Jul 2005
Beiträge: 260
joextra ist zur Zeit noch ein unbeschriebenes Blatt
Standard

also, ich verwende eine kleine lib die ich geschrieben habe. davor lief die mit den mysql befehlssatz (ohne probleme). dann habe ich diese auf mysqli umgestellt. allerdings habe ich ein paar sachen eingebaut.
1. ich mache gleich nach der connection ein $this->query("SET NAMES 'utf8'");
2. die daten werden "normalisiert" mit: $mysqlString = "'" .((strcmp(PHP_VERSION, '4.3.0') < 0) ? $this->connection->escape_string($mysqlString) : $this->real_escape_string($mysqlString)). "'";
3. die tables werden gelockt beim schreiben und updaten (das habe ich aber vor kurzem wieder entfernt, da es für meine zwecke wohl unnötig ist)
__________________
Erfahrungen vererben sich nicht jeder muss sie allein machen.
Mit Zitat antworten
  #13 (permalink)  
Alt 11-07-2010, 11:10
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.576
h3ll befindet sich auf einem aufstrebenden Ast
Standard

mysqli löscht keine Daten von alleine.

Ich würde mal alle Queries mitloggen, die ausgeführt werden. Wenn hier nichts ersichtlich ist würde ich noch einen Schritt weiter gehen und den Query-Log von MySQL sezieren.

Was natürlich auch sein könnte ist, dass bestimmte Schreibvorgänge gar nicht erfolgreich sind. Aber dies wirst du doch hoffentlich abfangen und mitloggen.

Und zu allerletzt könnte es auch sein, dass du eine Transaktion startest, diese aber nicht commitest.

Geändert von h3ll (11-07-2010 um 11:13 Uhr)
Mit Zitat antworten
  #14 (permalink)  
Alt 11-07-2010, 11:11
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Fragst du auch nach jedem Statement eventuell aufgetretene Fehler ab?
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #15 (permalink)  
Alt 11-07-2010, 15:23
joextra
 Registrierter Benutzer
Links : Onlinestatus : joextra ist offline
Registriert seit: Jul 2005
Beiträge: 260
joextra ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ich sollte dann bei gelegenheit die klasse erweitern und noch mehr mitloggen

Zitat:
welche storage engine?
MYISAM
__________________
Erfahrungen vererben sich nicht jeder muss sie allein machen.

Geändert von joextra (11-07-2010 um 17:20 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
mysqli mit PDO analyzer PHP Developer Forum 5 23-09-2009 13:07
mySQLi prepared statement handler wiederverwenden durch caching? bla$ter SQL / Datenbanken 1 05-10-2007 09:23
Datenverlust in Tabelle ->X³<- SQL / Datenbanken 10 31-01-2005 13:20
Wie geht das bloss? Select menu schaut immer durch den Layer durch Thommy HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 2 06-10-2002 12:47
Partitionieren ohne Datenverlust SourceKoT Linux und Unix 10 12-02-2002 23:55

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 12:53 Uhr.