Forum
Arkadaşlar merhaba
elimde Mysql 4.0 a ait bir database var.Database dosyaları *.frm *.myi *.myd uzantılı dosyalar.
Mysql 5.5 e geçmek istiyorum mecburiyetlerden dolayı.Ama 5.5 de database yapısı farklı anladığım kadarıyla.
4.0 a ait database i 5.5 e aktarma şansım varmı?
varsa nasıl bir yol izlemem gerekiyor.
Yardımcı olursanız sevinirim.
Ben olsaydım ve eğer makine vm olsaydı snapshot veya backup alırdım ve # rpm -Uvh ile mysql'i update ederdim. Çok fazla dependency olursa ilk önce 5.0 daha sonra 5.5'e geçerdim.
RHEL 5.5 iso'sunda mysql 5.0 paketlerinin tümü var. Mysql 5.5 de herhalde RHEL 5.7 de veya 6.0 da vardır.
MyISAM dan bahsediliyor.Bu database yapısında frm myi myd uzantılı imiş database dosyaları.ama nedense ben elimdeki database i sisteme gördüremedim.default \data klasörüne attım database dosyasını ama görmedi sistem.
mysql upgrade olayını araştırayım .
Makinenin backup'ını geri dönebiyorsan varolan paketleri upgrade etmen yeterli olacaktır.
#rpm -qa | grep mysql // ile mysql paketlerini görebilirsin. Aynı paketleri -Uvh ile upgrade edeceksin. U=update
#rpm -Uvh mysql_xxy1 // gibi. Varolanları upgrade ettikten sonra sistemin 5.5 üzerinden çalışmaya devam edecektir.
Backup'ını sağlam al kafan rahat olsun.
valla mysql konusunda pek bilgim yok.
yazdığınız komutları nereden çalıştıracağız?
benim mysql server windows 2000 üzerinde çalışıyor,depo otomasyon programının verilerini tutuyor, bilginize.
Yedeğini alıp mysql 5.5 üzerinde çalıştırmayı denediniz mi?
denedim.Database in dosyalarının bulunduğu klasörü 5.5 in data klasörüne attım.Servisi restart ettim.Olmadı.4.0 da bu şekilde çalışıyor.
5.5 bilgim yok.
Database i 5.5 e attach etmenin özel bir yolumu var acaba?
Benim söylemek istediğim sql in direkt yedeğini almanız ve aldığınız sql yedeğini mysql 5.5 üzerinde çalıştırmanızdır.
Mysql e hangi görsel programla bağlanıyorsunuz
Kardeş, burası Linux&Unix forumu. Yazdığım komutlar linux komutu. Senin sistem Win2000 miş. Deneyimim yok kusura bakma 🙂
5.5 e MySQL Workbench 5.2 ile bağlanıyorum.
4.0 da MySQL-Front kullanıyordum.
4.0 da öyle özel bir işlem yok yedekleme için.Databsein dosyalarının bulunduğu klasörü kopyalayarak yedek alınabiliyor sadece.
Bende elimdeki database klasörünü alıp 5.5 in data klasörüne atıyorum.yani C:\Program Files\MySQL\MySQL Server 5.5\data klasörüne atıyorum.
ama sistem bu attığım klasörü görmüyor.
bu işlemi komut satırından çözebilirsiniz
Öncelikle mysql4.4 kurulu sunucunuzda komut satırını açın
mysqldump yazıp enter a basın bakalım mysqldump ı bulacakmı yoksa mysql in bin dosyasına gidip orda çalıştırmalısınız
öncelikle yedek almak için
mysqldump -u veritabanikullaniciadi -p --opt veritabaniadi > yedek.sql
bu komutla yedek.sql adlı bir dosyaya sql yedeklerini atar
bundan sonraki adımda aldığınız bu sql yedeğini mysql5.5 kurulu olan bilgisayarda çalıştırmalısınız
mysql 5.5 kurulu bilgisayara geçiyorsunuz ve aşağıdaki komutu çalıştırıyorsunuz
mysql -u veritabanikullaniciadi -p --database=veritabaniadi < yedek.sql
yazdığınız şekilde 4.0 dan database yedeğini aldım.
5.5 e aktarırken şöyle bir hata alıyorum:
ERROR 1064 (42000) at line 11: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the
right syntax to use near 'TYPE=MyISAM' at line 22
sanırım uyum sorunu var 4.0 ile 5.5 arasında.
Yedek aldığın sql dosyasını açıp 22 nolu satırı yazarmısın
komut şöyle başlıyor ;
CREATE TABLE alt_satirlar (
Alt_Id int(10) unsigned NOT NULL auto_increment,
Ust_Id int(10) unsigned default '0',
Ayirac int(6) unsigned default '0',
Barhrkt_Id int(10) unsigned default '0',
Miktar double default '0',
commc double default '0',
user_id int(6) unsigned default NULL,
user_tarih date default NULL,
user_time varchar(10) default NULL,
Cikis_Metre double default '0',
Cikis_Net_Kg double default '0',
Cikis_Brut_Kg double default '0',
CIKIS_ADET double default '0',
GIRIS_ADET double default '0',
GIRIS_DEPO_ID int(6) unsigned default '0',
CIKIS_DEPO_ID int(6) unsigned default '0',
UNIQUE KEY Alt_Satirlar_Id (Alt_Id),
KEY Ust_Id (Ust_Id),
KEY Stok_Id (Barhrkt_Id),
KEY Ayirac (Ayirac)
) TYPE=MyISAM;
bu son satır 22. satır oluyor
TYPE=MYISAM olan satırları tüm dosya içinde ENGINE=MYISAM olarak değiştirip deneyebilirmisiniz.
değidiğiniz gibi ENGINE=MYISAM yaptım tüm satırlarda.Bu sefer o satırda hata vermedi.
Ancak 3919236 nolu satırda şöyle bir hata verdi:
C:\Program Files\MySQL\MySQL Server 5.5\bin>mysql -u root -p has < yedek.sql
Enter password: ****
mysql: Unknown OS character set 'cp857'.
mysql: Switching to the default character set 'latin1'.
ERROR 1064 (42000) at line 3919236: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for
the right syntax to use near 'Not varchar(255) default NULL,
Terbiye_Prosesi varchar(150) default NULL,
Fi' at line 93
Karakter setleriyle ilgilimi bu problem acaba.
Anladığım kadarıyla benim 4.0 da karakter seti olarak cp857 kullanılmış.
Şimdi 5.5 de karakter setlerinde cp857 yok.
yedek alma komutunu aşağıdaki gibi tekrarlarmısın
mysqldump -u veritabanikullaniciadi -p --no-tablespaces --default-character-set=latin5 --opt veritabaniadi > yedek.sql
onur hocam sabırla yardımcı olma isteğin için özellikle teşekkür ederim sana.
Database i 5.5 e aktardım .Yedek alıp geri yükleyerek değil.Database in klasörünü yanlış yere atıyormuşum bu zamana kadar.
Sizi boşuna yordum kusura bakmayın.
Database i aktardım aktarmasına fakat bu seferde otomasyon programı 5.5 te çalışmadı.Program açılırken garip hatalar çıkıyor.
örneğin programın exe sini çalıştırdığımda şöyle bir hata aldım:
dbq2_depo: Type mismatch for field 'Depolar', expecting: String actual: unknown
sanırım bu aldığım hatalar da karakter set ile ilgili.
5.5 de cp857 karakter seti olmadığı için latin5 olarak aldım database i.
MySQL Workbench ten databasedeki table ların içine girmek istediğimde şöyle bir hata alıyorum:
0 16:43:57 SELECT * FROM 2009.depo Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2009.depo' at line 1