Delphi Dünyası Facebook'ta

Kodbank İndir

! CODEBANK 2012 !

İNDİRMEK&DETAYLI BİLGİ ALMAK İÇİN BURAYI TIKLAYINIZ.

Gönderen Konu: MySql Data Dizin Konumunu Değiştirme  (Okunma sayısı 396 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı dynamo

  • Delphi 3 Level 4
  • ****
  • İleti: 137
  • Rep: +3/-1
MySql Data Dizin Konumunu Değiştirme
« : 22 Eylül 2011 08:40:35 »
mysql'i kurduğunuzda  C:\Program Files\MySQL\MySQL Server 5.1 altına kurulur,data yolu ise varsayılan C:\Documents and Settings\...\data dır.mysql, bu data yolunu  C:\Program Files\MySQL\MySQL Server 5.1 içinde my.ini dosyasında [mysqld] başlığı altında datadir değişkeninde tutar.yani datadir=D:/MYPRG/data yazıp,kaydedip, mysql servisini durdurup tekrar çalıştırısanız( restart yaparsanız ) data yolu değişmiş olur.Bunu basit bir delphi uygulaması ile kendimiz de yapalım:

data yolunu değiştikten sonra test etmek içib bağlantı testini de ekledim.



Kod: [Seç]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,IniFiles, StdCtrls, MyBackup, DADump, MyDump, ComCtrls, Buttons,
  DB, DBAccess, MyAccess, ExtCtrls,ShellApi, DAScript, MyScript;

type
  TForm1 = class(TForm)
    MyConnection1: TMyConnection;
    BitBtn1: TBitBtn;
    Edit1: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Edit2: TEdit;
    SpeedButton1: TSpeedButton;
    OpenDialog1: TOpenDialog;
    SpeedButton2: TSpeedButton;
    BitBtn2: TBitBtn;
    GroupBox1: TGroupBox;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    BitBtn3: TBitBtn;
    Label7: TLabel;
    Animate1: TAnimate;
    BitBtn4: TBitBtn;
    procedure BitBtn1Click(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure MyConnection1BeforeConnect(Sender: TObject);
    procedure MyConnection1AfterConnect(Sender: TObject);
    procedure MyConnection1Error(Sender: TObject; E: EDAError;
      var Fail: Boolean);
    procedure BitBtn4Click(Sender: TObject);
  private
    { Private declarations }
    procedure ConnectMYSQL();
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses  Unit2;

{$R *.dfm}



procedure TForm1.ConnectMYSQL();
var username,password,database,server:string;
begin

try
   BitBtn3.Enabled:=false;
   username:=  trim(Edit3.Text);
   password:=  trim(Edit4.Text);
   database:=  trim(Edit5.Text);
   server:=    trim(Edit6.Text);

   MyConnection1.Close;
   MyConnection1.Username:=username;
   MyConnection1.Password:=password;
   MyConnection1.Database:=database;
   MyConnection1.Server  :=server;
   MyConnection1.Port:=3306; //MYSQL TCP Port
   MyConnection1.LoginPrompt:=false;
   try
      MyConnection1.Open;
      Application.MessageBox('bağlandı....', 'MESAJ',MB_OK);
   except
      Application.MessageBox('Veritabanına bağlanamadı....', 'UYARI',MB_OK);
   end;
finally
   BitBtn3.Enabled:=true;
end;

end;

procedure TForm1.BitBtn1Click(Sender: TObject);
var
   IniDosya:TIniFile;
begin
   IniDosya:=TIniFile.Create(trim(Edit1.Text));
   try
      edit2.Text:=IniDosya.ReadString('mysqld','datadir','');

   finally
      IniDosya.Free;
   end;

end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
   OpenDialog1.Filter:=  'Ini Dosya (*.ini)|*.ini';
   OpenDialog1.InitialDir:='C:\Program Files\MySQL\MySQL Server 5.1';
   if OpenDialog1.Execute then  begin
      Edit1.Text:= OpenDialog1.FileName;
      BitBtn1.Click;
   end;
end;

procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
   form2.showmodal;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
var
   IniDosya:TIniFile;
   s:string;
begin
   //data dir
   s:=trim(Edit2.Text);

   s:=StringReplace(s,'\','/',[rfReplaceAll]);    //içindeki \ karekterleri / karakteri ile değiştir
   IniDosya:=TIniFile.Create(trim(Edit1.Text));
   try
      IniDosya.WriteString('mysqld','datadir',s);
   finally
      IniDosya.Free;
   end;

   showmessage('Kaydedildi');
end;

procedure TForm1.FormShow(Sender: TObject);
begin
   BitBtn1.Click;
end;

procedure TForm1.BitBtn3Click(Sender: TObject);
begin
    ConnectMYSQL();
end;

procedure TForm1.MyConnection1BeforeConnect(Sender: TObject);
begin
   Application.ProcessMessages;
   Animate1.Visible:=True;
   Animate1.Active:=True;

end;

procedure TForm1.MyConnection1AfterConnect(Sender: TObject);
begin
   Application.ProcessMessages;
   Animate1.Reset;
end;

procedure TForm1.MyConnection1Error(Sender: TObject; E: EDAError;
  var Fail: Boolean);
begin
   Application.ProcessMessages;
   Animate1.Reset;
end;

procedure TForm1.BitBtn4Click(Sender: TObject);
begin
    ShellExecute(Handle, 'open', 'compmgmt.msc', nil, nil, SW_SHOWNORMAL) ;
end;

end.


ÖNEMLİ NOT: 64 bit sistemlerde mysql kurulum dizini C:\Program Files(64)\MySQL\MySQL Server 5.1 şeklindedir( tam hatırlıyamadım,buna benzer bir şeydi).Bu dizin içinde my.ini dosyasına değiştirme izni vermiyor.O yüzden ben,ordaki my.ini dosyasını masaüstüne kopyalayıp datadir değiştirip kaydettikten sonra,tekrar C:\Program Files(64)\MySQL\MySQL Server 5.1 içine kopyalıyorum.

örnek uygulama ektedir.
« Son Düzenleme: 22 Eylül 2011 09:28:22 by dynamo »