b-t-o
Registriert: 09.07.2008
Beiträge:
200
|
autoincrement in den SQL-Definitionen
Geschrieben: 23.12.2008 21:46
Hallo miteinander,
bisher hatte ich meine SQL-Tabellen immer selbst angelegt und gepflegt und hatte daher in den Modulen das Plugin SQL nie verwendet.
Da ich jetzt auch mal von Server zu Server switchen muss, wollte ich nun das Praktische - die Repair-Funktion - nutzen.
2 Fragen, die sich mir im Moment stellen:
1. wie definiere ich das auto_increment im Feld uid? Hab dazu leider in den php-dateien des mysql-Treiber nichts gefunden.
momentan sieht mein Code so aus:
$opn_plugin_sql_table['table']['eigene_zeiterfassung']['uid'] = $opnConfig['opnSQL']->GetDBType (_OPNSQL_INT, 11, 0);
$opn_plugin_sql_table['table']['eigene_zeiterfassung']['userid'] = $opnConfig['opnSQL']->GetDBType (_OPNSQL_INT, 11, 0);
$opn_plugin_sql_table['table']['eigene_zeiterfassung']['___opn_key1'] = $opnConfig['opnSQL']->GetPrimaryKey (Array ('uid'),
'eigene_zeiterfassung');
Bei den OPN-Modulen scheint das auch zu funktionieren. Allerdings musste ich inzwischen ein paar Zeilen per phpmyadmin reinkopieren, so dass er immer wieder uid 0 einfügen wollte. Irgendwann war die halt auch da und führte dann zum Fehler.
Nachdem ich manuell auf auto_increment mittels phpmyadmin gestellt hatte, funktioniert es wieder.
2. wenn ich nun mein Modul via FTP auf den 2. Server kopiert habe, wie kann ich dann die Repair-Funktion verwenden, so dass mir OPN automatisch die Tabellen korrigiert? Oder geht das nur über den Updatemanager?
Vielen Dank schonmal.
Gruss,
b-t-o
|
stefan Beiträge:
2435
Wohnort: Münster
|
autoincrement in den SQL-Definitionen
Geschrieben: 24.12.2008 06:24
Zu 1.
Wir nutzen nicht die auto_increment Funktion die mysql liefert. Für Felder die diese Art von Daten brauchen, also id Felher die eindeutig sein sollen, nutzen wir zur erzeugung dieser id eine eigene Funktion.
$id = $opnConfig['opnSQL']->get_new_number ('tabelle', 'feld');
zu 2)
Sofern alles "Richtig" ist sollte es gehen wenn folgende Einstellungen gewählt sind.
OPN im Profi Modus betreiben -> Ja
OPN in den repariere Profi Modus versetzen -> Ja
Dann in diagnostig -> Datenbanken überprüfen(*)
Anmerkung
Wenn die Datenbank(Tabelle) "Umgebaut" werden soll ist es sinnvoller das über die update Funktion zu Realisieren. Nur dann hast du auch eine Versionskontrolle. Wenn du das bei mehreren Stellen brauchst (das Modul) wäre auch noch das Anlegen eines repository interessant. (ist aber von deiner Infrastruktur abhängig)
|
b-t-o
Registriert: 09.07.2008
Beiträge:
200
|
autoincrement in den SQL-Definitionen
Geschrieben: 24.12.2008 15:47
Hallo Stefan,
danke für Deine Antwort.
Ich bin halt immer noch ein Freund von der auto_increment-Funktion, da ich da sicher sein kann, dann nicht gleichzeitig ein anderer Benutzer genau diese Nummer verwendet.
Auch wenn es nur Millisekunden sind, so kann es (rein theoretisch) passieren, dass 2 Anwender gleichzeitig die Funktion get_new_number aufrufen.
Hängt die umgesetzte Funktion mit den verschiedenen SQL-Treibern zusammen, so dass bei einem Treiber es kein auto_increment gibt?
zu 2.)
ich werde das mal testen. Wobei ich schon ohne den Reparatur-Modus die Funktion mal ausprobiert hatte. Da kam als Ausgabe auch brav die Änderungen, die an der Tabelle durchgeführt werden müssen.
Da ich da noch nicht wusste, dass er es ohne den Reparatur-Modus nicht selbst macht, wollte ich die Funktion jetzt nochmal aufrufen und bekomme immer den kurzen Hinweis, dass die Funktion noch am Arbeiten ist. Dann kommt ein Redirect und bleibt dann stehen (ohne Ausgabe).
Viele Grüsse und ein frohes Weihnachtsfest
b-t-o
|