Forum

Moderiert von:
Forum Index
Entwicklerforum
     Entwicklungs Support
     autoincrement in den SQL-Definitionen
 

Autor autoincrement in den SQL-Definitionen
b-t-o

Registriert: 09.07.2008
Beiträge: 200


Sende eine Private Nachricht an b-t-o
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


Zitieren nach oben
stefan
Beiträge: 2436
Wohnort: Münster


Sende eine Private Nachricht an stefan
ICQ
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)


Zitieren nach oben
b-t-o

Registriert: 09.07.2008
Beiträge: 200


Sende eine Private Nachricht an b-t-o
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


Zitieren nach oben
stefan
Beiträge: 2436
Wohnort: Münster


Sende eine Private Nachricht an stefan
ICQ
autoincrement in den SQL-Definitionen

Geschrieben: 24.12.2008 16:58

genau nicht jedes SQL kann auto_increment daher ist was eigenes nötig.

Überscheidungen sind allerdings sehr unwahrscheinlich. Ab 200 Zugriffe per sec gleichzeitig die dann das nutzen wird es möglich.


Zitieren nach oben
sortieren nach

 
Vorheriges Thema:  Redirect manchmal mit 2 Slahes
Nächstes Thema:  Kompression Output abschalten

Gehe zu: