Topic: iš mysql 3 i mysql 5

Sveiki,
reikia perkelti duombazes iš MySql 3.23.58 į MySql 5.1.52. Problema lietuviškos raidės, jų neatvaizduoja puslapiuose. Viską atliekų taip:
1. mysqldump -u useris -p duombaze > backupas
2. įtraukiu į kabutes lentelėse tokius įrašus kaip fulltext, option ir t.t.  (kurie 5 versijoje tapo sisteminiai)
3.  create database duombaze character set utf8 collate ut8_lithuanian_ci;
4. suteikiu teises naudotojui
5. mysql -u useris -p duombaze < backupas

Ką darau ne taip?

Re: iš mysql 3 i mysql 5

Aukso vertės turinys:
http://www.mysql.lt/wiki/Lietuviskos_raides

Sėkmės!

Re: iš mysql 3 i mysql 5

šitą jau skaitęs ne vieną, kartą, bet...

Re: iš mysql 3 i mysql 5

Na kai dingsta viltis - darau taip: atsidarau .sql failą su kokiu nors editoriumi, replasinu blogus simbolius į gerus, rankomis sutvarkau lentelių struktūrą ir importuoju tvarkingus duomenis į db.

MongoDB Certified Developer
MongoDB Certified DBA
Zend Certified Engineer

Re: iš mysql 3 i mysql 5

Tai ką daro žygis rankomis galima padaryti su iconv programa, t.y. automatiškai pakonvertuoti duomenis iš vienos koduotės į kitą. Aišku svarbu tiksliai žinoti kokia koduote turimi duomenys yra užkoduoti. Nes iki MySQL 4.1 dažnai duomenys buvo saugomi vienoje koduotėje, o interpretuojami pagal kitos koduotės taisykles, todėl dažnai ir susiduriama su "problemomis"...

Re: iš mysql 3 i mysql 5

zygis wrote:

Na kai dingsta viltis - darau taip: atsidarau .sql failą su kokiu nors editoriumi, replasinu blogus simbolius į gerus, rankomis sutvarkau lentelių struktūrą ir importuoju tvarkingus duomenis į db.

Kad pačiame sql faile visi simboliai tvarkingi. Problema tik atvaizduojant su php.

Re: iš mysql 3 i mysql 5

minipleas wrote:
zygis wrote:

Na kai dingsta viltis - darau taip: atsidarau .sql failą su kokiu nors editoriumi, replasinu blogus simbolius į gerus, rankomis sutvarkau lentelių struktūrą ir importuoju tvarkingus duomenis į db.

Kad pačiame sql faile visi simboliai tvarkingi. Problema tik atvaizduojant su php.

Reiškias toje nuorodoje rasi, kaip padaryti, kad PHP teisingai atvaizduotų simbolius (-;

Re: iš mysql 3 i mysql 5

O per phpmyadmin kaip rodo? jei gerai tada problema ne duomenyse... Tokiu atveju vėlgi reikia žiūrėti duotą nuorodą.

MongoDB Certified Developer
MongoDB Certified DBA
Zend Certified Engineer

Re: iš mysql 3 i mysql 5

zygis wrote:

O per phpmyadmin kaip rodo? jei gerai tada problema ne duomenyse... Tokiu atveju vėlgi reikia žiūrėti duotą nuorodą.

phpMyAdmin gali rodyti ir blogai - čia daug įtakos turi duomenų bazės/lentelių/stulpelių koduočių nustatymai. Galima UTF8 duomenis surašyti į latin1 tipo stulpelį ir paskui jį teisingai suinterpretavus teisingai atvaizduoti, bet iš principo duomenys bus užsaugoti neteisingai (-;

Re: iš mysql 3 i mysql 5

žinau, tik dažnai toks būdas padeda nustatyti problemos esmę, tiksliau kur ta problema...

MongoDB Certified Developer
MongoDB Certified DBA
Zend Certified Engineer

Re: iš mysql 3 i mysql 5

zygis wrote:

O per phpmyadmin kaip rodo? jei gerai tada problema ne duomenyse... Tokiu atveju vėlgi reikia žiūrėti duotą nuorodą.

phpMyAdmin rodo lietuviškas (senoje db nerodo), taip kaip suprantu bėda bendravime mysql su php?

Re: iš mysql 3 i mysql 5

Tuomet lieka dvi galimos bėdos:
html'e nenurodytas kodavimas arba jis nurodytas ne utf-8,
nėra set names 'utf-8'

abu variantai aprašyti nuorodoje.

MongoDB Certified Developer
MongoDB Certified DBA
Zend Certified Engineer

Re: iš mysql 3 i mysql 5

susikūriau tokį php failiuką, kad trauktu duomenis iš db.

<htmt>
<head>
<title> test</title>
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
</head>
<body>
<?php
mysql_connect ("localhost","user","slaptazodis") or die (`neprisijungiu`);
mysql_select_db ("duombaze");
$query = mysql_query ("SELECT stulpelis FROM lentele");
mysql_query("SET NAMES 'utf8'") or die(`neprisijungiu`);
while ($row = mysql_fetch_array($query)) {
echo "<br /> kuku: " .$row['stulpelis']."<br />";}
?>
</body>
</html>

Tačiau duomenis atvaizduojami be lietuviškų raidžių, tai manau visgi, kad problema pačios duombazės.

Re: iš mysql 3 i mysql 5

pirma išsitrauki duomenis, o tada nurodai naudot utf-8... turėtų būti atvirkščiai...

MongoDB Certified Developer
MongoDB Certified DBA
Zend Certified Engineer

Re: iš mysql 3 i mysql 5

Visgi niekaip nepavyksta perkelti duombazės iš 3 į 5 versiją.  Gal kas turite koki step by step instrukciją ar ką panašaus kaip reikėtų?

Re: iš mysql 3 i mysql 5

minipleas wrote:

Visgi niekaip nepavyksta perkelti duombazės iš 3 į 5 versiją.  Gal kas turite koki step by step instrukciją ar ką panašaus kaip reikėtų?

Step by step instrukcija:
1) eksportuoji;
2) jeigu reikia konvertuoji;
3) importuoji;

Kaip ir rašiau - jeigu jau pas tave duomenys nuo pat pradžių neteisingai sudėti, tai gali tekti rankom juos susikonvertuoti 2 žingsnyje (arba pasinaudoti iconv).

Kaip duomenys turi būti saugomi ir išvedami galutiniame variante pateikta toje nuorodoje.

Galiu galų gale suarchyvuoti eksportuotą failą ir atsiųsti į minde@mysql.lt pažiūrėsim, kas ten gali nesigauti.

Re: iš mysql 3 i mysql 5

kerbas wrote:

Sveiki kolegos, susidūriau ir aš su šia problema. Tik reikalas tas, kad neturiu priėjimo prie PhpMyAdmin(tad negaliu pažiūrėti kur kokios koduotės). Turiu eksportuotą sql ir gražumas štai koks:

Kalvarijų gatvėje, prie&scaron;ais &quot;Baldų rojų&quot;, buvusiose &quot;&Scaron;atrijos&quot; patalpose ir prie mūsų visada galima rasti kur nemokamai palikti Jūsų automobilį;

Suvargau jau kovot. Bandžiau ir rankinį varijantą, bet niekaip nepavyksta visko sutvarkyt iki galo, tobulai. žmogus sako kad viskas UTF-8 koduotėje. Duomenų bazė Joomla 1.0(mano misija - perkelti į naują Joomlą). Tai kiek pasidomėjau, ji naudojo iso-8859-1. Gal tai ką sakys. Nesijaučiu tvirtai šioje sferoje. Tad prašau Jūsų, ekspertų, pagalbos...

Tai pirmiausia tuos duomenis ir interpretuok, kaip utf8: suimportavus atitinkamų stulpelių koduotės turi būti utf8_*, ir po prisijungimo prie MySQL turi būti vykdoma "SET NAMES utf8". Atvaizduojant duomenis kažkokioje programoje turi būti siunčiamos atitinkamos antraštės. Kadangi su Joomla nedirbu ir netgi jos vengiu, tai nieko pakomentuoti kaip ji tvarkosi su koduotėmis negaliu.

Re: iš mysql 3 i mysql 5

kerbas wrote:

Deja nepadeda. Senų lentelių koduotė buvo nustatyta "cp1257_lithuanian_ci".
Naujoj DB visur nustatyta "utf8_general_ci".
Velniava, tai pirma problema kuriai nerandu atsakymo taip ilgai. Kas per mistikos tos koduotės... O gal, kas per velniava ta joomla :)

Prieš tai rašei, kad duomenys jau utf8 formate.

Jeigu nesi tikras kokiame formate yra duomenys tai pabandyk paeksperimentuoti su iconv programa ir pakonvertuoti duomenų failą iš spėjamų koduočių į utf8 ir tada jau importuoti į naują sistemą. Taip pat labai svarbu, kad import faile (SQL) stulpeliams būtų nustatoma utf8 koduotė, o ne taip, kad duomenys utf8, bet stulpeliui vistiek nustatuma kokia nors kita.

Re: iš mysql 3 i mysql 5

kerbas wrote:

EDIT: Ir netikėtai likimas manęs pagailėjo ir stebuklingai pataisė viską... Notepad++ naudodamasis, atradau tokią duom bazės kopiją kur buvo nustatyta "Encode in ANSI", tad tereikėjo pakeist į "Encode in UTF-8 without BOM" ir lt raidės grįžo. Taip atsakymo aiškaus ir negavau. Pamokos - taip pat. Na bent jau problema išsisprendė...

O kiek kartų šioje temoje buvo rašyta, kad laikyt duomenis utf8 ir kiek kartų, kad ansi formatuose?