Autor Beitrag
lkz633
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 136

WinXP, Suse Linux 8.2 (unter VMWare)
D7 Prof, K3 Prof
BeitragVerfasst: Di 16.11.04 00:34 
Hallo,

habe eine bestehende Anwendung, diie auf MySQL mit ADO und MySQLProv zugreifen soll, die zu 100% früher funktioniert hat.

Dabei wurden SQL-select statements so ausgeführt: select * from datenbankname.tabellenname

Das klappt plötzlich nicht mehr, mit dem Vorsatz des Datenbanknamen
anscheinend schon gar nicht. Nach langem ausprobieren habe ich jetzt
herausgefunden, dass es mit select * from `tabellenname` klappt, also weder
mit einfachen noch doppelten Anführungszeichen.
Komischerweise klappt es zur Designzeit auch mit select * from tabellenname, zur Laufzeit aber nur mit dem Häcken.

Kann sich das jemand erklären? Hat MySQL komplett das Format geändert?
Wie komm ich auf den Vorbau mit dem Datenbanknamen, ging es früher nur so und jetzt nicht mehr?
Was übersehe ich?

Dank und Gruss
lkz633
highhatcompy
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 190

Win2000,Win XP,Linux(SuSE9.2)
Delphi 5 Prof.
BeitragVerfasst: Di 16.11.04 12:15 
Hallo, ich hatte mal ein ähnliches Problem. Das hing aber mit dem Tabellennamen zusammen und zwar hieß die Tabelle Order und hatte somit den gleichen Namen wie ein SQL Befehl, vieleicht hat dein Tabellenname auch eine Bedeutung in MySQL.

Viele Grüße Highhatcompy

_________________
Bist Du ein Programmierer, so wirst Du gegen Computer, Hardwarehersteller und Anwender verlieren. (Quelle: Murphy's Computer-Gesetz)
neojones
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1206
Erhaltene Danke: 1



BeitragVerfasst: Di 16.11.04 14:09 
lkz633 hat folgendes geschrieben:
Kann sich das jemand erklären? Hat MySQL komplett das Format geändert?
Wie komm ich auf den Vorbau mit dem Datenbanknamen, ging es früher nur so und jetzt nicht mehr?


Nein, das Format ist seit 3.23 nicht geändert worden. Das mit der Klammerung in Akzenten ist bei mySQL schon immer üblich. Wahrscheinlich liegt es, wie highhatcompy schon sagte, an Datenbank- oder Tabellennamen. Immer, wenn Du geschützte Begriffe als Namen verwendest, muss die Klammerung erfolgen.

Wie funktioniert das mit dem Datenbank-Vorsatz? Genau wie immer, nur mit Akzenten:

`datenbankname`.`tabellenname`

Viele Grüße,

Matthias

_________________
Ha! Es compiliert! Wir können ausliefern!
lkz633 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 136

WinXP, Suse Linux 8.2 (unter VMWare)
D7 Prof, K3 Prof
BeitragVerfasst: Di 16.11.04 16:49 
Habe im Namen einen Unterstrich bzw im Datenbanknamen einen Gedankenstrich, daran liegt es wohl.

Anscheined klappt es immer ohne Datenbankname, wiso hab ich dies damals hinzugefügt?

Wann braucht man ihn, wann nicht?

Danke und Gruss
lkz633

Edit1:
Datenbank1 hat einen Bindestrich im Namen, da klappt es auch ohne den Vorsatz, bei einer anderen Datenbank klappt es nur mit dem Datenbanknamen als Vorsatz,ansonsten kommt Tabelle nicht vorhanden.

In phpmyadmin klappt es immer ohne Datenbankname.

Ich bin verwirrt :shock:

Edit2:
Hab gerade in einer alten Anwendung nachgeschaut, die einwandfrei funktioniert, auch da wird das select stament ohne Datenbanknamen abgesetzt
lkz633 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 136

WinXP, Suse Linux 8.2 (unter VMWare)
D7 Prof, K3 Prof
BeitragVerfasst: Di 16.11.04 17:48 
Ok, hier mal ne Auflistung:

(1) select * from bugs,components klappt
(2) select * from bugs klappt aber nicht
(3) select * from `bugs` klappt

(4) select * from bugs.bugs Klappt

Wiso klappt (1), (2) aber nicht?
In einer anderen Datenbank klappt auch (2), wiso?

Wann brauch ich den Datenbanknamen, wann nicht?

Gruss
lkz633
neojones
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1206
Erhaltene Danke: 1



BeitragVerfasst: Di 16.11.04 18:45 
Du solltest ihn immer dazu setzen, weil Du es Dir später leichter machst, wenn Du distributierte Systeme benutzt...

_________________
Ha! Es compiliert! Wir können ausliefern!
lkz633 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 136

WinXP, Suse Linux 8.2 (unter VMWare)
D7 Prof, K3 Prof
BeitragVerfasst: Di 16.11.04 21:08 
Was heisst das? Datenbank auf entferntem Host? Das ist unabhänig.

Gruss
lkz633
neojones
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1206
Erhaltene Danke: 1



BeitragVerfasst: Mi 17.11.04 10:12 
Anwendungen, die auf einem Host mehrere Datenbanken benutzen. Das macht unter diversen Umständen durchaus Sinn, besonders bei sehr großen Projekten. Wir haben zum Beispiel so ein distributiertes System mit 4 Datenbanken zu je etwa 120 Tabellen laufen. Das ganze läuft seit neuestem auf einem mySQL-Cluster auf NDB-Basis auf 10 CPU's.

_________________
Ha! Es compiliert! Wir können ausliefern!
lkz633 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 136

WinXP, Suse Linux 8.2 (unter VMWare)
D7 Prof, K3 Prof
BeitragVerfasst: Mi 17.11.04 12:40 
Auf besagten Servern sind bereits mehrere Datenbanken vorhanden.

Die Frage besteht also weiterhin, wann braucht man Datenbanknamen, wann nicht, wann Apostroph, wann nicht.

Gruss
lkz633