WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   hjälp - Akut mysql problem (https://www.wn.se/forum/showthread.php?t=11882)

Conth 2006-01-18 19:01

Har ett litet akut problem. Fick krasch på en MyIsam tabell och har skapat om den och laddat tillbaka data. Så långt allt väl. Men nu ser jag att mina svenska tecken åäö blir fel efter re-load (=skräp)

Jag kör mysql 5 och har dumpat databasen med mysqldump db > dump

Laddar sedan med mysql db < dump och det blir fel.

Någon som har något tips ?!?
kollationering = latin1_swedish_ci (om det har betydelse??)

Exmpel: "Gullig och söt !!!", ska vara "söt" på slutet....

PeterM 2006-01-18 20:29

Skräptecknen är UTF-8 som tolkade som latin1, en klassiker.

Jag gissar att den dumpade filen använder UTF-8. Konvertera den till latin1 med lämpligt program och ladda om den i MySQL igen.

Conth 2006-01-18 23:38

Jo jag förstår att det är UTF-8. Det får bli ett senare problem varför dumpen blev i utf-8.
Någon som har ett tips om hur jag får in mitt data konverterat tillbaka till latin1 tas tacksamt emot. Har kört fast...

Provade att köra iconv på min mysqldump-fil (iconv --from-code=UTF-8 --to-code=ISO-8859-1 hdkonto.sql > konto_latin.sql) men det dumpar:
iconv: illegal input sequence at position 128637

Känns som det BORDE vara enkelt men HUR gör jag smartast. Som sagt tacksam för konkret tips...

PeterM 2006-01-19 01:35

Testa iconv --from-code=UTF-8 --to-code=ISO-8859-1//TRANSLIT hdkonto.sql > konto_latin.sql

Har du tur så fungerar det. Har du otur så får du andra skräptecken eller korruption istället. Kostar inget att prova i alla fall.

Conth 2006-01-19 09:59

Citat:

Originally posted by PeterM@Jan 19 2006, 02:35
Testa iconv --from-code=UTF-8 --to-code=ISO-8859-1//TRANSLIT hdkonto.sql > konto_latin.sql

Har du tur så fungerar det. Har du otur så får du andra skräptecken eller korruption istället. Kostar inget att prova i alla fall.

Tack för tipset. Satt upp ei natt och löste det tillslut genom att först ladda in UTF-8 fälten i databsen och köra ett php-script som gjorde utf8_decode() och sedan update på berörda kolumer. Känns väldigt klumpigt.

Nu måste jag göra in hemläxa så jag löser detta bättre nästa gång.

Någon som har tips?! Hur ni gör;
- Min mysqldump gav utf-8 kodning på min latin1 databas. Någon som vet vad som styr detta ?
- Idag dumpar jag hela databsen varje natt. Ibland händer det att jag vill ladda om en enskild tabell. Hur gör jag smartast för att "komma åt den" ut min stora dumpfil (nu kör jag grep på INSERT rader - känns primitivt...)

zoran 2006-01-19 13:02

Citat:

Originally posted by Conth@Jan 19 2006, 10:59

- Min mysqldump gav utf-8 kodning på min latin1 databas. Någon som vet vad som styr detta ?
- Idag dumpar jag hela databsen varje natt. Ibland händer det att jag vill ladda om en enskild tabell. Hur gör jag smartast för att "komma åt den" ut min stora dumpfil (nu kör jag grep på INSERT rader - känns primitivt...)

1. Din locale, dina mysql-inställningar i my.cnf, din flagga till mysqldump

2. Istället för att dumpa alla databaser i en klump gör så här:
Kod:

YEAR=`date '+%Y'`
MONTH=`date '+%B'`
DAY=`date '+%d'`
BACKUPROOT=/path/var/jag/vill/lagga/mina/filer
BACKUPDIR=${BACKUPROOT}/${YEAR}/${MONTH}/${DAY}

for db in `echo "show databases"| mysql -u<user> -p<pass> | grep -v Database`; do
  for table in `echo "show tables" | mysql -u<user> -p<pass> $db | grep -v Tables_in`; do
  BACKUPDBDIR=${BACKUPDIR}/${db}
  if [ ! -d ${BACKUPDBDIR} ]; then
    mkdir -p ${BACKUPDBDIR}
  fi
    mysqldump -u<user> -p<pass> $db $table > ${BACKUPDBDIR}/${table}
  done

done

Det här är helt otestat men bör funka.


Alla tider är GMT +2. Klockan är nu 06:22.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson