anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Di 08 Jul, 2025 22:37

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 19 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Sa 04 Mär, 2006 22:24 
Offline
Freak
Freak

Registriert: So 30 Okt, 2005 17:48
Beiträge: 1408
Wohnort: PB
Geschlecht: Männlich
LoGD: http://dav.blood-reaver.de/lotgd/
Hier mal eine Frage an die wirklich eingefleischten Coder:

Ich spielte kürzlich mit dem Gedanken, Foreign Keys in der Datenbank zu verwenden, als mit auffiel, das MyISAM diese ja gar nicht beherscht und man dazu auf InnoDB oder BerkleyDB umstellen müsste. Da Berkley mir aber zu ungewohnt vorkam, fiel meine Wahl zunächst auf InnoDB - nun die Frage: Geht das überhaupt oder würden da Probleme beim Betrieb von LotgD auftreten oder starke Leistungseinbrüche folgen etc.

Schon mal Danke im vorraus.

Auric

_________________
Mehr oder minder inaktiv


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa 04 Mär, 2006 22:27 
Offline
Freak
Freak
Benutzeravatar

Registriert: Di 02 Mär, 2004 18:16
Beiträge: 1206
Es sollte prinzipiell gehen. Nur ist die frage ob dann wirklich alles geht... und da bleibt immernoch die umstellung ... ein fehler... und verloren hat man.

_________________
R.I.P.
†26.7.2004 - 20.3.2006†
†MeteorA†


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa 04 Mär, 2006 22:59 
Offline
Freak
Freak

Registriert: Mo 06 Sep, 2004 15:17
Beiträge: 3236
Geschlecht: Männlich
Also ich hab mal Testweise ein Backup gemacht und alles auf InnoDB umgestellt. Kann man nicht beklagen, bei mir funktioniert alles wie es sollte. Keine probleme oder so, aber die Zeit ist ein wenig gestiegen um ca. 0.01 - 0.02 sec nur. Aber InnoDB ist empfehlenswerter, besonders weil man gerade dort schutz gegen Transfer Fehler hat!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo 06 Mär, 2006 00:13 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 04 Dez, 2004 02:34
Beiträge: 825
100% ôo
Das kann soviel ich weiß Mysql garnet :D
Dazu müsste man auf zb. Firebird umsteigen


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo 06 Mär, 2006 00:38 
Offline
Freak
Freak

Registriert: So 30 Okt, 2005 17:48
Beiträge: 1408
Wohnort: PB
Geschlecht: Männlich
LoGD: http://dav.blood-reaver.de/lotgd/
Devilzimti hat geschrieben:
100% ôo
Das kann soviel ich weiß Mysql garnet :D
Dazu müsste man auf zb. Firebird umsteigen


??? Was meinst du damit? InnoDB Tabellen verwalten kann MySQL auf jeden fall...

Und was hat dasmit firebird zu tun (Ist doch eigentlich ein Browser...)?

_________________
Mehr oder minder inaktiv


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo 06 Mär, 2006 08:56 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 04 Dez, 2004 02:34
Beiträge: 825
Das war auf Kevz Post bezogen :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo 06 Mär, 2006 14:20 
Offline
Freak
Freak

Registriert: Mo 06 Sep, 2004 15:17
Beiträge: 3236
Geschlecht: Männlich
Und worauf bezieht sich das? Definiere deine Aussage, und erläutere worauf sie sich bezieht. Denn deine Satz bildung verstehe ich nicht ganz.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo 06 Mär, 2006 14:59 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 05 Feb, 2005 22:59
Beiträge: 699
Wohnort: OL
LoGD: http://aristo.w039.white.fastwebserver. ... source.php
Sry, aber ich kapier's auch gerade nicht Oo
100% -> nicht MySQL -> aber Firebird ... :???: :?

_________________
Legends of Imperencia ist mit folgenden Servern befreundet: Silienta, Pandyria, Kokoto

Eliwood hat geschrieben:
-DoM hat geschrieben:
Hey Eliwood.... was ist eigentlich LoGD????

Spaghetticode :D


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo 06 Mär, 2006 21:25 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 04 Dez, 2004 02:34
Beiträge: 825
Tut mir Leid, hab auch noch Schule :)

[quote=Kevz]weil man gerade dort schutz gegen Transfer Fehler hat! [/quote]
100%?
Soviel ich weiß kann das nur Firebird, eine ebenfalls kostenlose Datenbank :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo 06 Mär, 2006 21:34 
Offline
Freak
Freak

Registriert: Mo 06 Sep, 2004 15:17
Beiträge: 3236
Geschlecht: Männlich
Natürlich kann man das nicht zu 100% Garantieren. Aber Laut MySQL Referenz, sollt es das sein.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo 06 Mär, 2006 23:07 
Offline
Großmeister
Großmeister

Registriert: Mi 15 Dez, 2004 00:41
Beiträge: 467
Wohnort: München
Selbstverständlich kann man das zu 100% garantieren, aber das bremst die ganze Geschichte ziemlich aus.

_________________
A bus station is where busses stop. A train station is where trains stop. On my desk there is a workstation...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo 06 Mär, 2006 23:32 
Offline
Freak
Freak

Registriert: Mo 06 Sep, 2004 15:17
Beiträge: 3236
Geschlecht: Männlich
Aber wie ist das mit den SQL- Querys?, muss man die ändern damit man schutz gegen Transfer Fehler hat oder? Ich hab mich bereits erkundigt und nicht wirklich etwas dazu gefunden nur für einen "INSERT" aber "UPDATE" nichts oder Sonstiges.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di 07 Mär, 2006 00:05 
Offline
Großmeister
Großmeister

Registriert: Mi 15 Dez, 2004 00:41
Beiträge: 467
Wohnort: München
Entweder setzt man manuell zu Beginn des Scripts ein LOCK auf den eigenen User-Datensatz und entfernt ihn am Ende wieder, oder man verwendet eine Datenbank, die sowas selbständig kann.
Ich weiß allerdings nicht, ob bei MyISAM LOCKs nur auf einen Datensatz möglich sind.
Problem ist nur, daß es eben die Datenbank extrem ausbremst, weil alle munter warten und auch die Gefahr besteht, daß zwei Accounts sich gegenseitig blockieren. Die Alternative eines kompletten Tabellen-LOCKs würde dagegen absichern, würde das Ganze aber entgültig unspielbar langsam machen.

_________________
A bus station is where busses stop. A train station is where trains stop. On my desk there is a workstation...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di 07 Mär, 2006 00:53 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 04 Dez, 2004 02:34
Beiträge: 825
Die alternative lautet also:
Firebird
Man kann den Transaktionsbug in LOGD auch schon ziemlich einschränken, indem man die Updates bissl modifiziert *g*..
Aber wie ich das meine werdet ihr in anperas version 4 sehen :D


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di 07 Mär, 2006 14:50 
Offline
Freak
Freak

Registriert: So 30 Okt, 2005 17:48
Beiträge: 1408
Wohnort: PB
Geschlecht: Männlich
LoGD: http://dav.blood-reaver.de/lotgd/
Hm.. also meine Accounts un die mysteriöse neue Tabelle laufen nun als InnoDB. Nur bleibt ein problem: Ich bekomme keinen Foreign Key zustande..

Kennt sich jemand aus? Ich hab den Syntakx auf meinem Buch verwendet und als fehler kamm imer nur: "could nor create Table (errorno: 150)", selbst wenns per ALTER TABLE nacheingefügt oder gleich im CREATE befehl drin war. Der restliche Query war fehlerfrei und selbst beim foreigen key hab ich eigentlich keine Fehler gemacht...

Beide Tabellen sind also vom Transaktionfähigen typ InnoDB...also wenn jemand weis, woran das liegt: bitte melden!

Auric

PS: Performancetechnisch läuft alles bestens, bin sehr zufrieden mit der Tabelle!

_________________
Mehr oder minder inaktiv


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di 07 Mär, 2006 16:39 
Offline
Freak
Freak
Benutzeravatar

Registriert: Di 02 Mär, 2004 18:16
Beiträge: 1206
Ungetestet:

ALTER TABLE accounts ADD FOREIGN KEY ( `key` ) REFERENCES `fkeytable` ( `fkey` ) ON DELETE CASCADE ON UPDATE CASCADE;

wichtig: beide tabellen müssen Type InnoDB sein!


zu deinem Fehler:

Mysql Dev hat geschrieben:
#

1005 (ER_CANT_CREATE_TABLE)

Cannot create table. If the error message refers to errno 150, table creation failed because a foreign key constraint was not correctly formed.


_________________
R.I.P.
†26.7.2004 - 20.3.2006†
†MeteorA†


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di 07 Mär, 2006 16:42 
Offline
Freak
Freak

Registriert: So 30 Okt, 2005 17:48
Beiträge: 1408
Wohnort: PB
Geschlecht: Männlich
LoGD: http://dav.blood-reaver.de/lotgd/
nope.. funzt nicht.. muss wohl an den Rechten oder so liegen

Hm.. ich wollte es eigentlich anders herum, sodass eine Andere tabelle einen Foreign Key trät, also ein Feld daraus nur einen bereits bestehenden Wert aus der acctid-Spalter der accounts annehmen kann. Da müsste man den Syntax doch dann umdrehen, oder?


Trotzdem Danke, aber ich habs mittlerweile über php gelöst.
Auric :wink:

_________________
Mehr oder minder inaktiv


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di 07 Mär, 2006 16:52 
Offline
Freak
Freak
Benutzeravatar

Registriert: Di 02 Mär, 2004 18:16
Beiträge: 1206
ok, ich bin weiter gekommen, jetzt hilft nichtmal mehr das mysql dev weiter:

$this->bbcode_second_pass_code('', '
ALTER TABLE `accounts` ADD INDEX ( `race` );
ALTER TABLE `races` ADD INDEX ( `raceid` ) ;

ALTER TABLE accounts
ADD
FOREIGN KEY `1` ( `race` )
REFERENCES `races`( `raceid` ) ;
')

Zitat:
#1452 - Cannot add or update a child row: a foreign key constraint fails (`lotgd/#sql-1a8_139`, CONSTRAINT `#sql-1a8_139_ibfk_1` FOREIGN KEY (`race`) REFERENCES `races` (`raceid`))

_________________
R.I.P.
†26.7.2004 - 20.3.2006†
†MeteorA†


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di 07 Mär, 2006 18:52 
Offline
Großmeister
Großmeister

Registriert: Mi 15 Dez, 2004 00:41
Beiträge: 467
Wohnort: München
Sofern "CASCADE" kaskadierendes Löschen aktiviert, würde ich damit sehr vorsichtig sein. ;) Da kann man nämlich schnell weit mehr löschen, als einem lieb ist.
Lieber über einen entsprechenden SQL-Code abfangen und von Hand auswerten.

Zu Devils Post bzgl. Vermeidung des Transaktionsbugs: Ich hab damals in meine Version ja schon mal eine Lösung eingefügt, die zwar recht aufwendig einzubauen ist, aber seitdem sämtliche Probleme behoben hat.
Inzwischen läuft die Version nur noch bei bibir, da ich selbst ja raus bin, aber evtl. kann Anp damit was anfangen, wenn er schon noch eine neue "Ausgabe" der ext ger macht.

_________________
A bus station is where busses stop. A train station is where trains stop. On my desk there is a workstation...


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 19 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
cron
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum