Autor |
Beitrag |
lkz633
      
Beiträge: 136
WinXP, Suse Linux 8.2 (unter VMWare)
D7 Prof, K3 Prof
|
Verfasst: 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
      
Beiträge: 190
Win2000,Win XP,Linux(SuSE9.2)
Delphi 5 Prof.
|
Verfasst: 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
      
Beiträge: 1206
Erhaltene Danke: 1
|
Verfasst: 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 
      
Beiträge: 136
WinXP, Suse Linux 8.2 (unter VMWare)
D7 Prof, K3 Prof
|
Verfasst: 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
Edit2:
Hab gerade in einer alten Anwendung nachgeschaut, die einwandfrei funktioniert, auch da wird das select stament ohne Datenbanknamen abgesetzt
|
|
lkz633 
      
Beiträge: 136
WinXP, Suse Linux 8.2 (unter VMWare)
D7 Prof, K3 Prof
|
Verfasst: 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
      
Beiträge: 1206
Erhaltene Danke: 1
|
Verfasst: 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 
      
Beiträge: 136
WinXP, Suse Linux 8.2 (unter VMWare)
D7 Prof, K3 Prof
|
Verfasst: Di 16.11.04 21:08
Was heisst das? Datenbank auf entferntem Host? Das ist unabhänig.
Gruss
lkz633
|
|
neojones
      
Beiträge: 1206
Erhaltene Danke: 1
|
Verfasst: 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 
      
Beiträge: 136
WinXP, Suse Linux 8.2 (unter VMWare)
D7 Prof, K3 Prof
|
Verfasst: 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
|
|