Kom ihåg mig?

MySQL-import med svenska tecken i fältnamn

Ämnesverktyg Visningsalternativ
Oläst 2008-09-12, 15:25 #1
Streammountain Streammountain är inte uppkopplad
Nykomling
 
Reg.datum: Sep 2008
Inlägg: 2
Streammountain Streammountain är inte uppkopplad
Nykomling
 
Reg.datum: Sep 2008
Inlägg: 2
Har stött på ett litet problem. Jag har en ganska så stor mysql-databas som jag exporterat från MySQL 4.0.24 på mitt webbhotell till min testserver som kör 5.någonting. Databasen är dumpad och uppackad till en .sql och allt är frid och fröjd så långt.

Jag stöter dock direkt på patrull när jag vill importera den. Anledningen är att det finns en hel del fältnamn som innehåller å, ä och ö. Det är ju iofs heldumt att använda specialtecken i fältnamnen men så långt tänkte jag inte för fem år sedan när den skapades. Jag har lyckats importera/exportera mellan servrar förut och det har gått bra med lite --default-character-set-modifieringar. Då har jag dock bara flyttat mellan mysql 4 till 4.

Så fort jag nu försöker importera får jag bara felmeddelanden om fel på SQL-syntaxen direkt när den stöter på ett av dessa fältnamn med svenska tecken i. Problemet är alltså inte att de svenska tecknen konverteras till skumma tecken, utan att MySQL totalvägrar att överhuvudtaget röra fältnamn med svenska tecken i.

Finns det någon lösning på detta som inte innebär att döpa om fältnamnen i originaldatabasen (vilket kommer att medföra modifieringar i kilometervis med kod)?

Servern jag flyttar från kör latin1 som character set, men --default-character-set=latin1 vid importen löser inga som helst problem.
Streammountain är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-09-12, 16:13 #2
studiox studiox är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Aug 2004
Inlägg: 1 356
studiox studiox är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Aug 2004
Inlägg: 1 356
Du kan inte byta teckenuppsättning på mysql bara "sådär".

Dock tror jag att ditt problem snarare är ett filsystemsproblem, jag gissar att du gör importen med mysqlimport eller mysql <finfin.sql ?

Din nya server kör säkrt UTF-8 som filsystem, och din gamla kör säkert nån iso.
Konvertera din dump till utf-8 och importera.
studiox är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-09-15, 00:04 #3
Streammountain Streammountain är inte uppkopplad
Nykomling
 
Reg.datum: Sep 2008
Inlägg: 2
Streammountain Streammountain är inte uppkopplad
Nykomling
 
Reg.datum: Sep 2008
Inlägg: 2
Citat:
Originally posted by studiox@Sep 12 2008, 16:13
Du kan inte byta teckenuppsättning på mysql bara "sådär".

Dock tror jag att ditt problem snarare är ett filsystemsproblem, jag gissar att du gör importen med mysqlimport eller mysql <finfin.sql ?

Din nya server kör säkrt UTF-8 som filsystem, och din gamla kör säkert nån iso.
Konvertera din dump till utf-8 och importera.
Tack för tipsen.

Lyckades dock till slut med en liten annan väg. Såg att *.sql-filen som mysqldump gjort åt mig hade några rader i början som såg intressanta ut. Ändrade raden:
Kod:
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8*/;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
ändrade SET NAMES till
Kod:
/*!40101 SET NAMES latin1 */;
och sen gick det av bara farten.
Streammountain är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-09-15, 00:55 #4
emilvs avatar
emilv emilv är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Feb 2004
Inlägg: 1 564
emilv emilv är inte uppkopplad
Bara ett inlägg till!
emilvs avatar
 
Reg.datum: Feb 2004
Inlägg: 1 564
Om du skapar dumpen med mysqldump (vilket du borde göra) så se till att använda r-flaggan för att säga vilken fil du ska dumpa till:
mysqldump --opt --quote-names -r dumpfil.sql databasnamn1

Och när du importerar:
echo "SOURCE dumpfil.sql;" | mysql databasnamn2

Detta har i alla fall jag funnit vara ett pålitligt sätt att flytta mellan olika servrar och versioner av MySQL.

(--quote-names är en viktig flagga! Jag vet inte hur många gånger jag fått dumpar av kunder som inte går smidigt att importera på grund av att de använt kolumnnamn som 'date' och andra reserverade ord)
emilv är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 
Ämnesverktyg
Visningsalternativ

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 11:57.

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