# Bindestrich in Spaltennamen bei MySQL?



## BeaTBoxX (17. Februar 2005)

Hallo,

ich benutze einen mysql server v 4.0.12  und phpmyadmin 2.5.6
Ich habe in meiner DB ein paar Tabellen, die Spaltennamen mit einem Bindestrich beinhalten.
Ist das generell ok ? Oder funktioniert das nur aus irgendeinem Grund zufaellig bei mir? 
Auf ein Problem bin ich gestossen, als ein Kollege von mir diese Tabellen auf einen neuen Server aufspielen wollte (und das mit einem anderen mysql Client)
Beim ausführen des (mit phpmyadmin exportierten) mysql Scripts kamen Fehlermeldungen wegen den Bindestrichen.

Liegt das nun an seinem Client, oder daran, dass es versch. Clients waren ? Oder sollte/darf man generell keine Bindestriche in Spaltennamen verwenden. (Unterstriche sind ja möglich..)

Ich vermeide sonst ueberall Sonderzeichen. Allerdings werden die Spaltennamen aus versch. Komponenten zusammengesetzt. Und dafuer waere es schon Hilfreich, wenn ich die Bindestriche lassen koennte.


Danke

Gruß
Frank


----------



## VBFreak (17. Februar 2005)

Der Bindestrich ist an sich schon ein Sonderzeichen und ist eigentlich für Subtraktionen reserviert. Möchtest du aber dennoch ein Bindestrich oder andere Sonderzeichen im Namen verwenden, muss du den Namen in `` setzen z. B.: `Tabellen-Spalte`. Das ` erhältst du, indem du
<Shift>+<Taste Zwischen ß und Backspace> drückst und danach die Leertaste drückst. Wenn du das Zeichen gleich 2mal brauchst, einfach 2mal die Tastenkombination drücken, hier fält dann die Leertaste weg.

Warum das bei dir ging, ist mir schleierhaft. Hätte eigentlich gar nicht funktionieren sollen


----------



## BeaTBoxX (17. Februar 2005)

Naja das ist schon so:


Hier mal ein Ausschnitt aus dem Export-Script von phpmyadmin:


```
#
# Tabellenstruktur für Tabelle `test1`
# 

DROP TABLE IF EXISTS `test1`;
CREATE TABLE IF NOT EXISTS `test1` (
  `id` int(11) NOT NULL auto_increment,
  `bla-fasel_dingens-kirchen` varchar(20) NOT NULL default '',
  `noch_ne_test-spalte` varchar(20) NOT NULL default '',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
```

Der phpmyadmin setzt das ja in diese Hochkommas.
Wenn ich dieses Script wieder ausführe ( mit dem phpmyadmin wohlgemerkt )  klappt das auch einwandfrei. Nur eben mit diesem anderen Client geht es nicht ein Script wie oben fehlerfrei auszuführen.

Deswegen versteh ichs ja nicht   

Gruß
Frank


----------



## hpvw (17. Februar 2005)

BeaTBoxX hat gesagt.:
			
		

> Der phpmyadmin setzt das ja in diese Hochkommas.


Klugsch...modus: Das sind keine Hochkommata. Hochkommata sind diese: ' (Shift + #).
Das Manual bezeichnet diese Zeichen als "Backtick".

Welchen Fehler meldet Dein anderes Skript denn?
Ist es in PHP? Dann mach nach dem Query mal echo mysql_error();


----------



## melmager (17. Februar 2005)

Oder man lässt die Finger vom Bindestrich und nimmt Ersatzweise den Unterstrich


----------



## BeaTBoxX (18. Februar 2005)

Nein der andere Client ist nicht PHP das ist eine Windowsapplikation.

Ich poste mal diese Fehlermeldung die Tage.

Dankeschoen schonmal 

Und zum Thema klugsch****modus  @ melmager.. Ich poste hier nicht weil ich blöde Sprüche hören, sondern weil ich was lernen will. Tu mir nen gefallen und spar dir sowas das naechste mal. Ich hab schon nen Grund warum ich das hier frage..


----------



## hpvw (18. Februar 2005)

Ist es denn eine Anwendung oder eine Programmiersprache.
Problem bei Anwendung, was ich mir vorstellen könnte: Die Anwendung kommt mit den Sonderzeichen nicht klar.
Mögliches Problem bei Programmiersprache: Irgendein Zeichen muss escaped oder sonstwie anders angegeben werden. Vielleicht verlierst Du ja auch irgendwas in der Zwischenablage.
PHPMyAdmin sorgt schließlich selbst dafür, dass die Zeichen richtig im Query landen.

Gruß hpvw


----------

