tutorials.de-Buchverschenkaktion 08/2010
+ Auf Thema antworten
  1. #1
    MySelV MySelV ist offline Mitglied MySelV hat eine blütenweiße Weste
    Registriert seit
    Sep 2008
    Beiträge
    16
    Hallo,

    ich versuche in einer Batch Datei folgende Dinge für eine MySQL Installation zu regeln:
    - Überprüfen ob MySQL in der Version bereits installiert ist (über die Registry) (das auslesen selbst und speichern in eine Variable funktoiniert)
    - Installieren von MySQL Server (quite) // funktioniert
    - Konfigurieren von MySQL Server per Batch // funktioniert

    Hier dazu die Batch:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    
    reg query "HKLM\Software\MySQL AB\MySQL Server 5.1" /v "Location"
    IF NOT %ERRORLEVEL%==0 (GOTO install) ELSE (GOTO readpath) 
                                                 
    :install
    echo install>>some.txt
    msiexec /i "c:\temp\install\bws\mysql.msi" INSTALLDIR="%PROGRAMFILES%\MySQLServer" /qb
     
    IF NOT EXIST "C:\Windows\SysWOW64" (SET PROGPATH=%PROGRAMFILES%) ELSE (SET PROGPATH="%PROGRAMFILES(x86)%")
       SET PROGPATH=###%PROGPATH%###
       SET PROGPATH=%PROGPATH:"###=%
       SET PROGPATH=%PROGPATH:###"=%
       SET PROGPATH=%PROGPATH:###=%
    Goto configure
     
    :readpath
    echo ReadPath>>some.txt
    for /f "skip=2 tokens=3" %A in ('reg query "HKLM\Software\MySQL AB\MySQL Server 5.1" /v "Location"') do set PROGPATH=%A
    echo %PROGPATH%>>some.txt
    Goto configure
     
    :configure
    echo Config>>some.txt
    c:    
     
    cd "%PROGPATH%\MySQLServer\bin"
    MySQLInstanceConfig.exe -i -q "-l%PROGPATH%\MySQLServer\log\install_log.txt" "-nMySQLServer" "-p%PROGPATH%\MySQLServer" "-t%PROGPATH%\MySQLServer\my-template.ini" "-c%PROGPATH%\MySQLServer\bws.ini" ServerType=DEVELOPMENT DatabaseType=MIXED ConnectionUsage=DSS Port=3306 ServiceName=BWSDatenbank RootPassword=werner
     
    mysql -u root
    SET PASSWORD FOR 'root'@'localhost' = PASSWORD('werner');


    Irgendwas stimmt an meinen GOTO's oder in der Abfrage der Registry im Schritt readPath noch nicht. In der Datei some.txt landet leider nur die Ausgabe "readpath" und nicht mehr. Allerdings seh ich den Fehler nicht, da die Abfrage als Einzeiler in der cmd funktioniert.
    Weiß jemand wo der Fehler liegt?

    Gruß Erik

  2. #2
    deepthroat deepthroat ist offline Mitglied Diamant deepthroat ist berühmt wie kein Zweiter deepthroat ist berühmt wie kein Zweiter deepthroat ist berühmt wie kein Zweiter deepthroat ist berühmt wie kein Zweiter deepthroat ist berühmt wie kein Zweiter deepthroat ist berühmt wie kein Zweiter deepthroat ist berühmt wie kein Zweiter deepthroat ist berühmt wie kein Zweiter deepthroat ist berühmt wie kein Zweiter deepthroat ist berühmt wie kein Zweiter deepthroat ist berühmt wie kein Zweiter
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    6.619
    Hi.

    In Batch Dateien muss man die Schleifenvariablen mit doppelten Prozentzeichen schreiben:
    Code :
    1
    
    for /f "skip=2 tokens=3" %%A in ('reg query "HKLM\Software\MySQL AB\MySQL Server 5.1" /v "Location"') do set PROGPATH=%%A
    Gruß
    .:Mitglied des 1. offiziellen Sven Uwe Fan-Clubs:.

  3. #3
    MySelV MySelV ist offline Mitglied MySelV hat eine blütenweiße Weste
    Registriert seit
    Sep 2008
    Beiträge
    16
    Hallo,

    super, danke dir.

    Gruß
    Geändert von MySelV (25.01.10 um 07:58 Uhr)

  4. #4
    MySelV MySelV ist offline Mitglied MySelV hat eine blütenweiße Weste
    Registriert seit
    Sep 2008
    Beiträge
    16
    Hallo,

    ich muss noch mal bisschen in die Runde fragen. Wir wollen via eclipseRCP ein Programm installieren, welches eine MySQL DB braucht. Folgendes habe ich bereits:
    - MySQL Non-Install
    - Batch für Installation, diese enthält
    - Installation der MySQL als Windows Service mit Konfigurationsdatei

    Allerdings würde ich gerne noch ein paar Fehlerfälle abfangen:
    1) Ein Dienst mit gleichem Namen ist schon vorhanden
    Probiert habe ich das über "sc query DIENSTNAME", allerdings kann ich danach den ERRORLEVEL nicht abfragen (der ist auch 0 wenn der Service nicht existiert)
    Alternativ könnte ich es hier auch über die Registrierung via der Einträge im HKLM/System/CurrentControlSet/Services probieren und schauen, ob dort ein Eintrag zu dem Service existiert

    2) Löschen des alten Dienstes
    Der Aufruf dazu wäre "mysqld --remove DIENSTNAME" allerdings stellt sich mir die Frage, ob ich den Dienst mit einer "anderen" mysqld löschen kann. Also, wenn der Dienst von d:\foo\pfad\mysql\bin\mysqld hinzugefügt wurde, ob ich ihn dann von c:\temp\andererpfad\mysql\bin\mysqld löschen kann?
    --- [Gelöst] Man kann Services sinnvollerweise ja auch über sc delete SERVICENAME löschen ---

    3) Anderer Service mit gleichem Port
    Ist ein Aufruf (hier vielleicht auch über sc query) möglich, mit dem ich herausbekomme, ob ein anderer Service bereits meinen Port belegt?


    Viele Grüße
    Erik
    Geändert von MySelV (10.02.10 um 08:19 Uhr)

Ähnliche Themen

  1. MySql-Skript mit Batch-Datei ausführen
    Von tecla im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 15.01.10, 13:53
  2. Sehr großer MySQL-Batch
    Von HerHde im Forum Linux & Unix
    Antworten: 4
    Letzter Beitrag: 27.12.08, 05:08
  3. [Batch] Per Batch Textzeile auslesen und Verbindung testen?
    Von overreaction im Forum Sonstige Sprachen
    Antworten: 1
    Letzter Beitrag: 15.03.08, 20:18
  4. [mySQL, MS SQL] per batch stoppen
    Von C-H im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 17.01.05, 16:57
  5. MySql via Batch (source test.txt)
    Von heynem im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 15.06.04, 16:38

Stichworte

Lesezeichen

Lesezeichen