Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Problem mit CREATE DATABASE (https://www.delphipraxis.net/118643-problem-mit-create-database.html)

Sebbel 12. Aug 2008 06:54

Datenbank: MySQL • Version: 5.0.51b • Zugriff über: MySQL Direct

Problem mit CREATE DATABASE
 
Hallo,

ich will mit meinem Programm eine MySQL-Datenbank erstellen, um von anderen Programmen zur Datenbankverwaltung bei der Installation meines Programms unabhängig zu sein.
Zur Kommunikation mit dem lokalen Server benutze ich MySQL-Direct (dürfte in diesem speziellen Fall wohl zweitrangig sein)

Nun, wenn ich also meinen Befehl
SQL-Code:
CREATE DATABASE `testname`
über die übliche Function an den Server schicke, bekomme ich vom Server die Meldung "Can't create Database 'test'; Database exists". Die Datenbank existiert so natürlich nicht.
Mit CREATE TABLE (...); funktioniert das Ganze einwandfrei.

Ich benutze MySQL 5.0.51b, hier auf Windows XP, ganz normal über den Installer installiert und das Root-Passwort über den anschließenden Konfigurator gesetzt.

Woran liegts nun, dass ich keine Databases erstellen darf (mit einem SQL-Manager gehts, und der hat ja auch keine anderen Zugangsdaten als ich - oder?)


Über jede noch so hilfreiche Antwort würde ich mich sehr freuen

mkinzler 12. Aug 2008 06:57

Re: Problem mit CREATE DATABASE
 
Und bist du sicher das es keine Datenbank dieses Namens gibt?

Sebbel 12. Aug 2008 07:10

Re: Problem mit CREATE DATABASE
 
Ja, habe das in diversen Variationen ausprobiert.
Jetzt kommt auch der Fehler "Unknown Database 'testdatenbankname'"

marabu 12. Aug 2008 07:16

Re: Problem mit CREATE DATABASE
 
Moin,

nur um sicher zu gehen: Du kennst den Unterschied zwischen CREATE DATABASE und CREATE TABLE?

Freundliche Grüße

DeddyH 12. Aug 2008 07:18

Re: Problem mit CREATE DATABASE
 
AFAIR wird z.B. bei XAMPP automatisch eine Datenbank mit Namen "test" angelegt. Du könntest es ja mal mit einer anderen Syntax versuchen.
SQL-Code:
CREATE DABASE IF NOT EXISTS `Wuppdi`

Sebbel 12. Aug 2008 07:23

Re: Problem mit CREATE DATABASE
 
Ehm, *hust*

das mit CREATE TABLE habe ich hier nur erwähnt, um zu zeigen, dass der Fehler wohl nicht an der Schnittstelle zwischen Programm uns Server liegt...
Zitat:

Zitat von marabu
Moin,

nur um sicher zu gehen: Du kennst den Unterschied zwischen CREATE DATABASE und CREATE TABLE?

Freundliche Grüße


Ehm, *hust*

das mit CREATE TABLE habe ich hier nur erwähnt, um zu zeigen, dass der Fehler wohl nicht an der Schnittstelle zwischen Programm und Server liegt...



Zitat:

Zitat von DeddyH
AFAIR wird z.B. bei XAMPP automatisch eine Datenbank mit Namen "test" angelegt. Du könntest es ja mal mit einer anderen Syntax versuchen.
SQL-Code:
CREATE DABASE IF NOT EXISTS `Wuppdi`


Hey, super. Das funktioniert. Jetzt frag ich mich aber: Warum? Wo ist da der große unterschied?
Vielen vielen Dank

DeddyH 12. Aug 2008 07:28

Re: Problem mit CREATE DATABASE
 
Die Unterschiede sind folgende:

- ich habe 2 Buchstaben vergessen :oops: , das muss natürlich DATABASE heißen und nicht DABASE
- die DB wird nur angelegt, wenn sie noch nicht existiert, dadurch kommt es zu keinen Fehlermeldungen. Das kann man z.B. sehr gut in Backup/Restore-Scripten verwenden.

Sebbel 12. Aug 2008 15:39

Re: Problem mit CREATE DATABASE
 
Ich musste grade feststellen, dass dies eine einmalige Aktion war. Jetzt geht es wieder nicht (Fehlermeldung immer noch "Unknown Database,...)
Ich habe unmitelbar vorher diverse Befehle über die Konsole ausprobiert habe (alle von dieser Seite)

Kann es vielleicht mit einem dieser Befehle zusammenhängen? Ich schaffe es leider nicht mehr zu rekonstruieren.

DeddyH 12. Aug 2008 15:46

Re: Problem mit CREATE DATABASE
 
Was sagt denn Show Databases?

Sebbel 12. Aug 2008 16:13

Re: Problem mit CREATE DATABASE
 
Danke, dein show databases hat mir aufgezeigt wo der fehler liegt bzw. mich drauf aufmerksam gemacht.

Will ich zu einer Datenbank verbinden die nicht existiert, bzw. zu keiner Datenbank verbunden bin, kann ich auch nicht einmal eine Datenbank erstellen. Und da ich in meinem Programm immer zuerst den künftigen Datenbanknamen einlese versuchte er ohne verbindung ebendiese zu erstellen. Genauso verhält es sich beim ersten Start des Programmes. Es hat noch garkeine Datenbank, also kann ich mich auch nicht am MySQL server anmelden um diese Datenbank überhaupt erst zu erstellen (mein gott klingt das kompliziert)

Zum Glück liefert MySQL ja standardmäßig die Datenbank "test" mit. Werde das also so lösen, dass er künftig vor dem erstellen irgendwelcher Datenbanken zur "test" verbindet und dann nach dem erstellen zur neuen Datenbank


da muss man erst mal drauf kommen.

herkulesamstart 12. Aug 2008 17:18

Re: Problem mit CREATE DATABASE
 
Ich hab zwar keine Ahnung von MySQL, aber solltest du nicht besser eigene DBs zur Verfuegung stellen, anstatt dich auf die mitgelieferten zu stuetzen bzw zu verlassen? Muss dein Programm denn nach dem start sofort mit einer DB verbunden werden?

Sebbel 12. Aug 2008 18:14

Re: Problem mit CREATE DATABASE
 
Ich sehe aber keine andere Möglichkeit meine eigene Datenbank zu erstellen. Wie gesagt, man muss ja offensichtlich und logischerweise zum Server verbunden sein und das geht nur wenn man das über eine existierende Datenbank macht.

Gibt es vielleicht die Möglichkeit über einen Konsolenbefehl eine DB zu erstellen. Wenn ja, wie setze ich das in Delphi um?

Tumm 12. Aug 2008 18:20

Re: Problem mit CREATE DATABASE
 
Öhm, wenn du einen Mysql-server aufsetzt gibt es immer schon die datenbank mysql, verbind dich einfach mit der. Wenn du dann mit create database deine erstellt hast kannste ja einfach mit "USE testdb" oder tmysqlclient.select_db('testdb'); dorthin wechseln.

DeddyH 12. Aug 2008 18:26

Re: Problem mit CREATE DATABASE
 
Richtig, die System-DB muss schon vorhanden sein, sonst dürfte der Server nicht mehr laufen.

Sebbel 12. Aug 2008 18:30

Re: Problem mit CREATE DATABASE
 
Das war ja auch mein Plan :)

Tumm 12. Aug 2008 18:59

Re: Problem mit CREATE DATABASE
 
Zitat:

Zitat von Sebbel
Das war ja auch mein Plan :)

Wie jetzt? Ich meinte, dass du als Default-DB beim Aufruf "mysql" angibst.

Delphi-Quellcode:
tmysqlclient.db := 'mysql';

Sebbel 12. Aug 2008 20:55

Re: Problem mit CREATE DATABASE
 
Ja, ist doch das gleiche wie wenn ich als default "test" nehme, jedenfalls wurde die bei mir auch automatisch mit der MySQL installation eingerichtet. Und wenn ich dann meine Datenbank mit der default erstellt habe, wechsele ich auf ebendiese.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz