Μεταφορά Site σε άλλο Server! Πρόβλημα με τα ελληνικά της βάσης!

Started by Alexandros, April 16, 2010, 03:04:24 PM

Previous topic - Next topic

Alexandros

Καλησπέρα σε όλους! Εδώ και μια εβδομάδα προσπαθώ να μεταφέρω ένα SMF Forum σε άλλο μηχάνημα (για την ακρίβεια σε δύο, με την ελπίδα ότι θα δουλέψει στο ένα) χωρίς επιτυχία. Κάτι πάει στραβά και οι σελίδες του Φόρουμ στη θέση των ελληνικών δείχνουν "γαριδάκια".

To αρχικό Φόρουμ που δουλεύει μια χαρά τρέχει σε:
Windows 2003
MySQL 5
PHP 5.2
IIS 6

Οι υπολογιστές που προσπαθώ να τρέξω το αντίγραφο είναι:
Α. Windows XP
   MySQL 5
   PHP 5.2
   IIS 6

B. Windows 2003
   MySQL 5
   PHP 4.4
   IIS 6

Η αρχική βάση έχει character set = latin1 και collation = swedish_ci

Έχω δοκιμάσει backup της αρχικής και restore στα άλλα μηχανήματα με:
- MySQL Administrator
- MySQL Front
- phpMyAdmin
- MysQL Migration Toolkit
- mysqldump (δοκιμές με latin1 και με utf8 στο --default-character-set τόσο κατά το backup όσο και κατά το restore)

και δεν έχω δει φως μέχρι τώρα!!!  >:(  Γαριδάκια και πάλι γαριδάκια!

Μήπως μπορεί να βοηθήσει κανείς?

*Να κάνω Post το πρόβλημά μου και στα αγγλικά (στην κατηγορία Install and Upgrade) ή δεν κάνει?  :-\

Πάνο

Quote from: Alexandros on April 16, 2010, 03:04:24 PM
Η αρχική βάση έχει character set = latin1 και collation = swedish_ci

Η collation νωμίζω πρέπει να είναι general_ci (ή unicode_ci) και το carecter cet "utf-8"
Άσπρη είναι η άρια φιλή, η σιωπή, τα λευκά κελία, το ψήχος, το χιόνι, οι άσπρες μπλούζες των γιατρών, τα νεκροσέντονα, η ηρωίνη. Αυτά λίγο για την αποκατάσταση του μαύρου...

Alexandros

Τί εννοείς πρέπει? Στην αρχική βάση? Αφού έτσι στήθηκε όταν στήθηκε!  Εννοείς να τα αλλάξω τώρα?


agridoc

Μπορείς να δώσεις ένα link του προε μεταφορά site (στείλε το με ΠΜ αν δεν θέλεις να φαίνεται δημόσια);

Quote from: Alexandros on April 16, 2010, 03:04:24 PM
Η αρχική βάση έχει character set = latin1 και collation = swedish_ci
Αν το collation είναι latin1_swedish_ci αυτό πρέπει να παραμείνει, μέχρι τουλάχιστον να ολοκληρωθεί η μεταφορά. Το directory του SMF δεν αναφέρεις πως έγινε backup - restore. Ακολούθησες τις οδηγίες Re: Εγκατάσταση Ελληνικών - Αναβάθμιση της έκδοσης του SMF - Αλλαγή server ή ακολουθήθηκε άλλη διαδικασία;

Quote from: Alexandros on April 16, 2010, 03:04:24 PM*Να κάνω Post το πρόβλημά μου και στα αγγλικά (στην κατηγορία Install and Upgrade) ή δεν κάνει?  :-\

Ο πίνακας υποστήριξης στα Ελληνικά έγινε για να επικοινωνούμε στην γλώσσα μας, δεν απαγορεύεται σε κανέναν να υποβάλλει ερώτημα στους κεντρικούς (αγγλικούς) πίνακες υποστήριξης. Απλά η σύγχρονη υποβολή του ίδιου ερωτήματος ισοδυναμεί με double post.
  For Greek aeromodellers and our friends around the world  - Greek Button sets for SMF - Greeklish to Greek mod
Δeν αφιερώνω χρόνο για μηνύματα σε greeklish.

Alexandros

QuoteΑκολούθησες τις οδηγίες Re: Εγκατάσταση Ελληνικών - Αναβάθμιση της έκδοσης του SMF - Αλλαγή server ή ακολουθήθηκε άλλη διαδικασία;

Ναι, με την διαφορά ότι δεν έβαλα το φόρουμ σε maintenance mode (είχα όμως απενεργοποιήσει την πρόσβαση στο site ώστε να μη γίνουν αλλαγές).

QuoteΜπορείς να δώσεις ένα link του προε μεταφορά site (στείλε το με ΠΜ αν δεν θέλεις να φαίνεται δημόσια);

Αυτή τη στιγμή το site είναι κάτω γιατί δεν ξεκινά η MySQL (υποψιάζομαι Virus)  >:( . Μπορώ όμως να σου στείλω αν θες μερικά από τα πολλά backup αρχεία που πήρα (ειδικά σε αυτά που έγιναν με mysqldump --default-character-set=latin1 τα ελληνικά διαβάζονται κανονικά αν το αρχείο ανοιχτεί με Wordpad) ή και τα αρχεία του site σε ένα zip.  :-\

* Συγνώμη για την καθυστερημένη απάντηση αλλά έπεσε πολύ δουλειά!!

Alexandros

Το αρχικό Φόρουμ είναι και πάλι πάνω!!  :) Σου έχω στείλει ένα PM με το link!

agridoc

  For Greek aeromodellers and our friends around the world  - Greek Button sets for SMF - Greeklish to Greek mod
Δeν αφιερώνω χρόνο για μηνύματα σε greeklish.

Alexandros

Μα φυσικά! Αφού είναι το αρχικό!!  ???

Στα αντίγραφα που πάω να στήσω είναι το πρόβλημα! Εκεί δεν φαίνονται σωστά τα ελληνικά!

π.χ στο:  http://www.dpem.tuc.gr/forum2/ [nofollow]   
(δεν θυμάμαι πιο αντίγραφο της βάσης έχω κάνει restore τελευταία, αλλά όποιο τρόπο κι αν δοκίμασα τα ελληνικά δεν εμφανίστηκαν ποτέ κανονικά).



Alexandros

Τί υποτίθεται ότι θα κάνω με αυτό?  :o
Να αλλάξω το collation της αρχικής βάσης από swedish_ci σε ...?
Και μετά?

agridoc

Το περίεργο στο νέο είναι οτι το τελευταίο μήνυμα εμφανίζεται σωστά σε codepage windows-1253. Το παλιό φαίνεται εντάξει.

Παίρνεις ένα νέο backup του παλιού με PhpMyAdmin και το ανεβάζεις στο νέο σβήνοντας τα προηγούμενα.

Πριν το backup και πριν το restore να έχεις επιλέξει στο PhpMyAdmin default collation latin1_swedish_ci

Υ.Γ. Απ' οτι βλέπω αλλάζεις subdomain. Πιθανώς η δουλειά να γίνεται και πιο εύκολα, δεν ξέρω όμως τι πρόσβαση έχεις στο σύστημα.
  For Greek aeromodellers and our friends around the world  - Greek Button sets for SMF - Greeklish to Greek mod
Δeν αφιερώνω χρόνο για μηνύματα σε greeklish.

Alexandros

QuoteΤο περίεργο στο νέο είναι οτι το τελευταίο μήνυμα εμφανίζεται σωστά σε codepage windows-1253.

Ναι. Αυτό με παραξένεψε κι εμένα! Τα δύο τελευταία Post που έκανα (σχετικά πρόσφατα) φαίνονται μια χαρά!

QuoteΠριν το backup και πριν το restore να έχεις επιλέξει στο PhpMyAdmin default collation latin1_swedish_ci

Θα το δοκιμάσω και βλέπουμε!

Quote, δεν ξέρω όμως τι πρόσβαση έχεις στο σύστημα.

Πλήρη πρόσβαση!

Alexandros

Mετά από 8 ώρες απεγνωσμένης προσπάθειας για εγκατάσταση του phpmyadmin, και αφού η PHP αρνήθηκε πεισματικά να συνεργαστεί με την mysql, τα ξήλωσα όλα (PHP Και MySQL) και τα ξαναφόρτωσα (αυτή τη φορά PHP5) μέσω Installer (με το AppServ) μαζί με τον Apache (που τώρα τρέχει παράλληλα με τον IIS. Κάτι λίγα νάζια έκανε και πάλι το phpmyadmin μέχρι που τελικά δούλεψε!!

Οπότε και δοκίμασα αυτά που μου είπες!

Το backup και το Restore έγιναν με MySQL Connection collation = latin1_swedish_ci
Η βάση του αντιγράφου δημιουργήθηκε με collation  latin1_swedish_ci , όπως δηλαδή είναι και η αρχική.
Το character set του αρχείου κατά το restore (Import) επιλέχθηκε latin1.
(όπως φαίνεται και στις εικόνες παρακάτω)

To αποτέλεσμα δεν ήταν και πολύ ενθαρυντικό!

Αρχικό φόρουμ (Win2003-IIS-PHP5-MySQL 5): www.dpem2.tuc.gr/forum [nofollow]

Αντίγραφο (Win2003-Apache2-PHP5-MySQL 5): http://147.27.70.4:8010/mpdforum2 [nofollow]

* To αντίγραφο που υπήρχε στο www.dpem.tuc.gr/forum2 [nofollow] (και έτρεχε σε IIS) έπαψε να λειτουργεί και βγάζει blank page! Ακόμα και το repair_settings.php (όπως μπορείτε να δείτε, μιας που το έχω ακόμα στο φάκελό του) βγάζει μόνο τις φωτογραφίες του script και τίποτε άλλο!

Θα με σκάσει αυτο το φόρουμ!!!  :(

agridoc

Απ' ότι κατάλαβα τρέχεις το SMF σου σε σύστημα που ελέγχεις ο ίδιος, δεν ξέρω αν έχουν και άλλοι πρόσβαση. Εκεί νομίζω βρίσκεται και η αιτία του προβλήματος, δεν μπορώ όμως να σε βοηθήσω σ' αυτόν τον τομέα.
  For Greek aeromodellers and our friends around the world  - Greek Button sets for SMF - Greeklish to Greek mod
Δeν αφιερώνω χρόνο για μηνύματα σε greeklish.

GoofyX

<ελαφρώς off-topic>

Παιδεύεσαι γιατί δεν έστησες εξαρχής το forum σου σε UTF-8. Εκεί θα είχες ένα encoding για τη βάση, ένα για τις σελίδες σου και δε θα είχες πρόβλημα με ενδεχόμενα restore. Δυστυχώς ο κόσμος δεν καταλαβαίνει ακόμα ότι το μέλλον λέγεται Unicode και ας χρησιμοποιούσε μόνο Αγγλικά και παιδεύεται με λύσεις προηγούμενης δεκαετίας (windows-1253 που δεν είναι καν πρότυπο ή το iso8859-7). Το σύμβολο του € πας να γράψεις και την πατάς.

Δικαιολογίες του τύπου «μα εγώ χρησιμοποιώ μόνο Ελληνικά και Αγγλικά, γιατί να βάλω UTF-8» ή «η επεξεργασία σε UTF-8 είναι πιο αργή» είναι απλά βλακείες.

Χρησιμοποιείτε UTF-8 και αφήστε τις 8-bit λύσεις στο παρελθόν, μια και καλή.

</ελαφρώς off-topic>
... Morpheus: What is "real"? How do you define "real"? If you 're talking about what you can feel, what you can smell, what you can taste and see, then "real" is simply electrical signals interpreted by your brain...

agridoc

  For Greek aeromodellers and our friends around the world  - Greek Button sets for SMF - Greeklish to Greek mod
Δeν αφιερώνω χρόνο για μηνύματα σε greeklish.

GoofyX

Όχι και φανατισμένο. Αν το είχε στήσει το φόρουμ σε UTF-8, δε θα είχε αυτά τα προβλήματα που έχει τώρα. Το λέω ώστε νέοι χρήστες να χρησιμοποιούν εξαρχής UTF-8 και να έχουν το κεφάλι τους ήσυχο. Τώρα αν το θεωρεί κάποιος φανατισμό αυτό, ε, τι να πω. Κάντε ό,τι νομίζετε.
... Morpheus: What is "real"? How do you define "real"? If you 're talking about what you can feel, what you can smell, what you can taste and see, then "real" is simply electrical signals interpreted by your brain...

nikan

Φίλε Αλέξανδρε, αν διαβάσεις στη σελίδα του Phoca Changing Collation tool που έδωσα παραπάνω θα δεις ότι τρέχοντάς το στον server αλλάζεις την επιθυμητή βάση δεδομένων και όλους τους πίνακές της σε utf-8.
Απλά αντιγράφεις το περιεχόμενο του zip στον server και τρέχεις το αρχείο index.php, όπως κάνεις με το repair_settings.php.
Σου πρότεινα να δοκιμάσεις αυτό το εργαλείο γιατί είχα αντιμετωπίσει κι εγώ παρόμοια προβλήματα.
Άλλωστε δεν είναι δικό μου για να το διαφημίσω, απλά κάνει δουλειά.

- off-topic -
Παλαιότερα όταν οι server δεν υποστήριζαν utf-8, αναγκαστικά είχαμε latin και πολλά προβλήματα. Η επιμονή της χρήσης utf-8 δεν είναι φανατισμός αλλά απαραίτητο.

Alexandros

QuoteΠαιδεύεσαι γιατί δεν έστησες εξαρχής το forum σου σε UTF-8

Δεν το αρνούμαι! Αλλά το πρόβλημα είναι γνωστό! Η λύση ήταν άγνωστη!

ΝΑΙ! ΝΑΙ! "ήταν"  Καλά διαβάσατε!


Φίλε nikan δεν το δοκίμασα το εργαλείο (και ίσως δεν έκανα καθόλου καλά, όπως θα καταλάβεις παρακάτω) γιατί ξεχάστηκα ψάχνωντας με το Google για λύσεις!  :-[ Αν προλάβω θα του κάνω μια δοκιμή αργότερα και αν δουλέψει θα πάω να πηδήξω από κάνα μπαλκόνι που έφαγα τόσες ώρες τσάμπα!

Λοιπόν, η λύση (δεν θα έλεγα προτεινόμενη ή ιδανική) ήταν:

1) Εγκατάσταση εκ νέου (σε νέο directory) των αρχείων του Φόρουμ (προσοχή να είναι ίδια έκδοση)
2) Δημιουργία κενής βάσης με UTF-8 για character set και χρήστη με δικαιώματα στη βάση (για την εγκατάσταση)
3) Εγκατάσταση (εκτέλεση του install.php) και επιλογή για αποθήκευση του Φόρουμ και της βάσης σε UTF-8!
4) Φτιάχνουμε μια 3η βάση και πάλι σε UTF-8 στην οποία θα αναφέρομαι ως db2.
5) Κάνω Export από το phpmyadmin τη δομή (και μόνο) της αρχικής βάσης σε sql σκριπτ.
6) Ανοίγω το sql αρχείο και αντικαθιστώ όπου υπάρχει latin1 με utf8.
7) Κάνω import το sql αρχείο στην db2 ώστε να δημιουργήσω την ίδια δομή αλλά σε utf8.
8 ) Εγκαθιστώ το Notepad++  και το Unired (θα χρειαστούν στις μετατροπές των encoding)
9) Για κάθε πίνακα της αρχικής βάσης κάνω:
         α) Εξαγωγή των δεδομένων σε csv μορφή (προσοχή: Εκεί που λέει Fields Enclosed By βγάζω το
             &quot; που έχει και βάζω "
         β) Άνοιγμα του csv αρχείου με το Notepad++, άνοιγμα του Unired, αντιγραφή των
            περιεχομένων του Notepad++ στο Unired και αποθήκευσή τους σε μορφή cp1252.
         γ) Άνοιγμα του νέου αρχείου (αυτού με το cp1252) με Notepad++ (τώρα τα ελληνικά φαίνονται
            σωστά αλλά δεν είμαστε ακόμα σε utf8) κάνουμε cut τα περιεχόμενα, επιλέγουμε "Encoding in
            UTF-8" από το μενού και κάνουμε Paste. Σώζουμε το αρχείο (csv κατάληξη εννοείται).
         δ) Κάνουμε Import το αρχείο στον αντίστοιχο πίνακα της βάσης db2.
10) Με χρήση του repair_settings (ή και χειροκίνητα) αλλάζουμε την βάση της νέας εγκατάστασης στην db2 (εννοείται πως ο χρήστης θα πρέπει να έχει δικαιώματα και σε αυτή τη βάση)

ΤΕΛΟΣ!  ;)

Φυσικά, επειδή το default encoding των σελίδων του SMF είναι iso-8859-1 θα πρέπει να αλλάζουμε συνέχεια το encoding του browser σε utf8. Οπότε εγώ πείραξα (χωρίς να είμαι 100% σίγουρος, το παραδέχομαι) και λίγο τα αρχεία του φόρουμ και αντικατέστησα το "ISO-8859-1" με "UTF-8" στις php γραμμές που δημιουργούν τα"Content-Type" headers των σελίδων καθώς και στα σημεία που αναφέρονται στο lang_character_set. Νομίζω το πρώτο έγινε στα αρχεία:
/Sources/Display.php
/Sources/Load.php
/Sources/Subs.php
/Sources/News.php
και η δεύτερη αλλαγή στα αρχεία:
/Themes/Default/languages/index.english.php
/Themes/Default/languages/Install.english.php

Και πάλι όλα δούλεψαν μια χαρά!! Default encoding των σελίδων σε UTf-8!  ;D

Προσοχή: Αν είναι εγκαταστημένο το πακέτο της ελληνικής γλώσσας πρέπει και αυτά τα αρχεία να γίνουν UTF-8!

Σας ευχαριστώ όλους για την ανταπόκριση!

GoofyX

Κάποιες ερωτήσεις, γιατί ίσως δεν κατάλαβα καλά ορισμένα σημεία. Ίσως ο τρόπος σου τελικά να αποτελεί οδηγό για μετατροπή σε UTF-8.

Quote from: Alexandros on April 26, 2010, 08:51:55 AM
Λοιπόν, η λύση (δεν θα έλεγα προτεινόμενη ή ιδανική) ήταν:

1) Εγκατάσταση εκ νέου (σε νέο directory) των αρχείων του Φόρουμ (προσοχή να είναι ίδια έκδοση)

Εννοείς φρέσκο SMF σε νέο κατάλογο, έτσι;

Quote from: Alexandros on April 26, 2010, 08:51:55 AM
3) Εγκατάσταση (εκτέλεση του install.php) και επιλογή για αποθήκευση του Φόρουμ και της βάσης σε UTF-8!

Εγκατάσταση στο SMF από το βήμα 1, έτσι;

Quote from: Alexandros on April 26, 2010, 08:51:55 AM
4) Φτιάχνουμε μια 3η βάση και πάλι σε UTF-8 στην οποία θα αναφέρομαι ως db2.

Γιατί τρίτη βάση;

Quote from: Alexandros on April 26, 2010, 08:51:55 AM
5) Κάνω Export από το phpmyadmin τη δομή (και μόνο) της αρχικής βάσης σε sql σκριπτ.
6) Ανοίγω το sql αρχείο και αντικαθιστώ όπου υπάρχει latin1 με utf8.

Μα υποτίθεται ότι η δομή των βάσεων είναι η ίδια, μόνο το encoding αλλάζει (εκτός αν πρόσθεσες εσύ ή κάποιο mod επιπλέον πίνακα). Θα μπορούσες να χρησιμοποιήσεις τη φρέσκια βάση.

Quote from: Alexandros on April 26, 2010, 08:51:55 AM
7) Κάνω import το sql αρχείο στην db2 ώστε να δημιουργήσω την ίδια δομή αλλά σε utf8.
8 ) Εγκαθιστώ το Notepad++  και το Unired (θα χρειαστούν στις μετατροπές των encoding)

Τέτοια εργαλεία θα τα είχες άπλετα στη διάθεσή σου αν χρησιμοποιούσες Linux. :) Επειδή σε έκοψα για ψαγμένο, δεν βάζεις ένα Linux να ησυχάσεις; :) :)

Το Notepad++ δεν έχει επιλογή για cp1252 encoding;

Quote from: Alexandros on April 26, 2010, 08:51:55 AM
9) Για κάθε πίνακα της αρχικής βάσης κάνω:
         α) Εξαγωγή των δεδομένων σε csv μορφή (προσοχή: Εκεί που λέει Fields Enclosed By βγάζω το
             &quot; που έχει και βάζω "
         β) Άνοιγμα του csv αρχείου με το Notepad++, άνοιγμα του Unired, αντιγραφή των
            περιεχομένων του Notepad++ στο Unired και αποθήκευσή τους σε μορφή cp1252.
         γ) Άνοιγμα του νέου αρχείου (αυτού με το cp1252) με Notepad++ (τώρα τα ελληνικά φαίνονται
            σωστά αλλά δεν είμαστε ακόμα σε utf8) κάνουμε cut τα περιεχόμενα, επιλέγουμε "Encoding in
            UTF-8" από το μενού και κάνουμε Paste. Σώζουμε το αρχείο (csv κατάληξη εννοείται).
         δ) Κάνουμε Import το αρχείο στον αντίστοιχο πίνακα της βάσης db2.

Αντί να κάνεις ένα ένα πίνακα, θα μπορούσες να πάρεις το export της βάσης (να σβήσεις τα create table) και να δουλέψεις με εκείνο. Ουσιαστικά το export θα είχε μόνο τα δεδομένα (insert into...), αυτό που ήθελες δηλαδή.

Quote from: Alexandros on April 26, 2010, 08:51:55 AM
10) Με χρήση του repair_settings (ή και χειροκίνητα) αλλάζουμε την βάση της νέας εγκατάστασης στην db2 (εννοείται πως ο χρήστης θα πρέπει να έχει δικαιώματα και σε αυτή τη βάση)

Έχω την εντύπωση ότι κάνεις μια επιπλέον βάση χωρίς να χρειάζεται. Γιατί δεν χρησιμοποίησες την πρώτη σου βάση, από το φρέσκο SMF;

Quote from: Alexandros on April 26, 2010, 08:51:55 AM
Φυσικά, επειδή το default encoding των σελίδων του SMF είναι iso-8859-1 θα πρέπει να αλλάζουμε συνέχεια το encoding του browser σε utf8. Οπότε εγώ πείραξα (χωρίς να είμαι 100% σίγουρος, το παραδέχομαι) και λίγο τα αρχεία του φόρουμ και αντικατέστησα το "ISO-8859-1" με "UTF-8" στις php γραμμές που δημιουργούν τα"Content-Type" headers των σελίδων καθώς και στα σημεία που αναφέρονται στο lang_character_set. Νομίζω το πρώτο έγινε στα αρχεία:
/Sources/Display.php
/Sources/Load.php
/Sources/Subs.php
/Sources/News.php
και η δεύτερη αλλαγή στα αρχεία:
/Themes/Default/languages/index.english.php
/Themes/Default/languages/Install.english.php

Και πάλι όλα δούλεψαν μια χαρά!! Default encoding των σελίδων σε UTf-8!  ;D

Πιθανόν να χρειάζεται να αλλάξεις κάτι και στην ίδια τη βάση, όσον αφορά τον encoding. Εννοώ ότι κάπου πήρε το μάτι μου μέσα στο αγγλικό τμήμα ή στο documentation, δε θυμάμαι, ότι ένας πίνακας γράφει μια τιμή για το encoding. Ίσως να το έψαχνες αν ισχύει κάτι τέτοιο.

Πάντως, σε κάθε περίπτωση, κάνε πολλές δοκιμές με το φόρουμ, για να σιγουρευτείς ότι παίζει οκ.

Μπράβο που το έψαξες τόσο πολύ!  8)
... Morpheus: What is "real"? How do you define "real"? If you 're talking about what you can feel, what you can smell, what you can taste and see, then "real" is simply electrical signals interpreted by your brain...

Advertisement: