Große Datenmengen werden falsch in Datenbank eingetragen
Große Datenmengen werden falsch in Datenbank eingetragen
am 04.03.2005 07:11:48 von Christian Brosch
Hallo NG,
ich habe ein Script geschrieben das eine Winamp Playliste ausliest und
jeden einzelnen Titel in die Datenbank einträgt.
Das Problem war nun das die Reihenfolge der Titel in der Datenbank
durcheinander war. Also lasse ich eine Variable mitzählen und trage
diese Zahl mit in die Datenbank in eine andere Spalte ein. Tzja und das
Ende vom Lied die Zahl wird nicht richtig in die Datenbank eingetragen
die Reihenfolge bleibt unverändert.
Also erst mal anschauen was schickt das Script überhaupt an die
Datenbank. ich lasse mir das query ausgeben (also ich meine den Text in
mysql_query()) und siehe da: Dort ist alles nach Wunsch des Erfinders.
Also sendet das Script richtig an die Datenbank. Also muss der Fehler
bei mysql liegen...
Ich habe bereits versucht alle Daten mit einem Query einzutragen, aber
da erhalte ich eine Meldung die Sinngemäß bedeutet das ich keinen
Arbeitsspeicher mehr frei habe.
Auch der Versuch immer 100 Zeilen auf einmal einzufügen brachte mir
diese Meldung. Bei 50 habe ich wieder den Fehler mit der Reihenfolge...
Hatt jemand vielleicht eine Idee wie ich das Problem löse kann?
Danke schon mal
Mfg
Christian Brosch
Re: Große Datenmengen werden falsch in Datenbank eingetragen
am 04.03.2005 08:05:29 von Fabian Schladitz
Christian Brosch schrieb:
> Das Problem war nun das die Reihenfolge der Titel in der Datenbank
> durcheinander war. Also lasse ich eine Variable mitzählen und trage
> diese Zahl mit in die Datenbank in eine andere Spalte ein. Tzja und das
> Ende vom Lied die Zahl wird nicht richtig in die Datenbank eingetragen
> die Reihenfolge bleibt unverändert.
Daten sind in einer Datenbank IMMER durcheinander. Erst beim SELECT
ordnet man sie.
Was du suchst ist übrigens AUTO_INCREMENT in der Tabellenspalte. Dann
brauchst du keine eigene Variable mitzuführen.
> Also erst mal anschauen was schickt das Script überhaupt an die
> Datenbank. ich lasse mir das query ausgeben (also ich meine den Text in
> mysql_query()) und siehe da: Dort ist alles nach Wunsch des Erfinders.
> Also sendet das Script richtig an die Datenbank. Also muss der Fehler
> bei mysql liegen...
>
> Ich habe bereits versucht alle Daten mit einem Query einzutragen, aber
> da erhalte ich eine Meldung die Sinngemäß bedeutet das ich keinen
> Arbeitsspeicher mehr frei habe.
>
> Auch der Versuch immer 100 Zeilen auf einmal einzufügen brachte mir
> diese Meldung. Bei 50 habe ich wieder den Fehler mit der Reihenfolge...
>
> Hatt jemand vielleicht eine Idee wie ich das Problem löse kann?
Wie wäre es mit Fehlerbehandlung? Lass dir doch mal ausgeben, was
mysql_error() so zu sagen hat nach deiner Query. Dann siehst du, ob dein
Query auch im 'Sinne des Erfinders' von _MySQL_ war.
--
HTH,
Fabian
Re: Große Datenmengen werden falsch in Datenbank eingetragen
am 04.03.2005 17:42:52 von Christian Brosch
Fabian Schladitz wrote:
> Christian Brosch schrieb:
>
>> Das Problem war nun das die Reihenfolge der Titel in der Datenbank
>> durcheinander war. Also lasse ich eine Variable mitzählen und trage
>> diese Zahl mit in die Datenbank in eine andere Spalte ein. Tzja und
>> das Ende vom Lied die Zahl wird nicht richtig in die Datenbank
>> eingetragen die Reihenfolge bleibt unverändert.
>
>
> Daten sind in einer Datenbank IMMER durcheinander. Erst beim SELECT
> ordnet man sie.
> Was du suchst ist übrigens AUTO_INCREMENT in der Tabellenspalte. Dann
> brauchst du keine eigene Variable mitzuführen.
>
Sorry falsch formuliert. was ich meine normalerweise werden die Daten in
der Reihenfolge ausgegeben in der ich sie auch eintrage. AUTO_INCREMENT
kenn ich und das funktioniert auch, nur dadurch das die Playlisten
mehrmals wöchentlich aktualisiert werden kann die zahl schnell in die
hunderttausende gehen. Na gut einmal im Jahr die Tabele komplett leeren
sollte evtl genügen.
>> Also erst mal anschauen was schickt das Script überhaupt an die
>> Datenbank. ich lasse mir das query ausgeben (also ich meine den Text
>> in mysql_query()) und siehe da: Dort ist alles nach Wunsch des
>> Erfinders. Also sendet das Script richtig an die Datenbank. Also muss
>> der Fehler bei mysql liegen...
>>
>> Ich habe bereits versucht alle Daten mit einem Query einzutragen, aber
>> da erhalte ich eine Meldung die Sinngemäß bedeutet das ich keinen
>> Arbeitsspeicher mehr frei habe.
>>
>> Auch der Versuch immer 100 Zeilen auf einmal einzufügen brachte mir
>> diese Meldung. Bei 50 habe ich wieder den Fehler mit der Reihenfolge...
>>
>> Hatt jemand vielleicht eine Idee wie ich das Problem löse kann?
>
>
> Wie wäre es mit Fehlerbehandlung? Lass dir doch mal ausgeben, was
> mysql_error() so zu sagen hat nach deiner Query. Dann siehst du, ob dein
> Query auch im 'Sinne des Erfinders' von _MySQL_ war.
>
mysql_error() schweigt.
Danke für die Hilfe ich mache es jetzt mit AUTO_INCREMENT
Re: Große Datenmengen werden falsch in Datenbank eingetragen
am 04.03.2005 18:34:21 von Niels Braczek
Christian Brosch schrieb:
> AUTO_INCREMENT
> kenn ich und das funktioniert auch, nur dadurch das die Playlisten
> mehrmals wöchentlich aktualisiert werden kann die zahl schnell in die
> hunderttausende gehen. Na gut einmal im Jahr die Tabele komplett leeren
> sollte evtl genügen.
Sagen wir: Eine Million Datensätze pro Jahr. Bei einer 11-stelligen
vorzeichenlosen auto_increment ID reicht das für etwa 10.000 Jahre.
Sollte reichen.
MfG
Niels
Re: Große Datenmengen werden falsch in Datenbank eingetragen
am 04.03.2005 19:03:30 von Michael Fesser
.oO(Christian Brosch)
>Fabian Schladitz wrote:
>
>> Daten sind in einer Datenbank IMMER durcheinander. Erst beim SELECT
>> ordnet man sie.
>> Was du suchst ist übrigens AUTO_INCREMENT in der Tabellenspalte. Dann
>> brauchst du keine eigene Variable mitzuführen.
>>
>Sorry falsch formuliert. was ich meine normalerweise werden die Daten in
>der Reihenfolge ausgegeben in der ich sie auch eintrage.
Nicht unbedingt. Bei einem einfachen SELECT ohne ORDER BY-Klausel ist
die Reihenfolge der Daten mehr oder weniger zufällig bzw. vom DBMS
abhängig. Willst Du eine bestimmte Reihenfolge haben, dann mußt Du das
der DB in Deiner Abfrage auch mitteilen.
>AUTO_INCREMENT
>kenn ich und das funktioniert auch, nur dadurch das die Playlisten
>mehrmals wöchentlich aktualisiert werden kann die zahl schnell in die
>hunderttausende gehen.
Peanuts. Ein 32bit-Integer reicht schon locker bis 4 Mrd. Und sollte das
mal nicht ausreichen, dann gibts auch 64bit-Integer ...
>Na gut einmal im Jahr die Tabele komplett leeren
>sollte evtl genügen.
Wozu? Ein paar Millionen Datensätze sind für ein halbwegs modernes DBMS
ein Klacks, vernünftige Indizierung vorausgesetzt.
Micha
Re: Große Datenmengen werden falsch in Datenbank eingetragen
am 04.03.2005 22:08:52 von Christian Brosch
Michael Fesser wrote:
> .oO(Christian Brosch)
>
>
>>Fabian Schladitz wrote:
>>
>>
>>>Daten sind in einer Datenbank IMMER durcheinander. Erst beim SELECT
>>>ordnet man sie.
>>>Was du suchst ist übrigens AUTO_INCREMENT in der Tabellenspalte. Dann
>>>brauchst du keine eigene Variable mitzuführen.
>>>
>>
>>Sorry falsch formuliert. was ich meine normalerweise werden die Daten in
>>der Reihenfolge ausgegeben in der ich sie auch eintrage.
>
>
> Nicht unbedingt. Bei einem einfachen SELECT ohne ORDER BY-Klausel ist
> die Reihenfolge der Daten mehr oder weniger zufällig bzw. vom DBMS
> abhängig. Willst Du eine bestimmte Reihenfolge haben, dann mußt Du das
> der DB in Deiner Abfrage auch mitteilen.
>
>
>>AUTO_INCREMENT
>>kenn ich und das funktioniert auch, nur dadurch das die Playlisten
>>mehrmals wöchentlich aktualisiert werden kann die zahl schnell in die
>>hunderttausende gehen.
>
>
> Peanuts. Ein 32bit-Integer reicht schon locker bis 4 Mrd. Und sollte das
> mal nicht ausreichen, dann gibts auch 64bit-Integer ...
>
Öhm neeee das reicht doch denke ich.
>
>>Na gut einmal im Jahr die Tabele komplett leeren
>>sollte evtl genügen.
>
>
> Wozu? Ein paar Millionen Datensätze sind für ein halbwegs modernes DBMS
> ein Klacks, vernünftige Indizierung vorausgesetzt.
>
> Micha
Gut ihr habt gewonnen, da könnte die Seite ewig bestehen.
MfG Christian