PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Illegal mix of collations (latin1_swedish_ci,I MPLICIT) and (utf8_general_ci,COE RCIBLE



Admin
20.05.2016, 17:31
Wenn obige Meldung erscheint, haben sie verschiedene Kollationen in Ihrer Datenbank.
Dieser "Fehler" wird behoben indem sie ihre Datenbank von diesem "Illegalen" durcheinander
befreien.

Ein Beispiel wie das zu machen ist:



Öffnen sie Ihre Datenbank mit :extlink: phpMyAdmin (http://www.phpmyadmin.net/).
Klicken sie oben links auf den "dbNAME" der Datenbank.
Alle Tabellen Ihrer Datenbank werden nun in der rechten Fenster-hälfte aufgelistet.
Sie können nun in der Spalte Kollation, ihre Datenbanktabellen durchgehen.

Die meisten Ihrer Tabellen in der Datenbank haben die utf8_general_ci Kollation, aber einige
enthalten zum Beispiel die Kollation latin1_swedish_ci. Sie wollen nun allen Tabellen die für sie
richtige Kollation zuweisen. Das machen sie so .....

Klicken sie im linken Fenster auf die zu ändernde Tabelle, welche dann im rechten Fenster angezeigt wird.
Klicken sie dann oben in der rechten Fenster-hälfte, auf "Operationen".
Nun erscheinen verschiedene Fenster, wobei eines das Fenster Tabellenoptionen ist.
In diesem Fenster klicken sie rechts neben Kollation auf den kleinen Pfeil, worauf ein Optionsmenü
aufgeht, welches alle Kollationen beinhaltet. Wählen sie nun Ihre Kollation aus und klicken auf OK.

Machen sie das mit allen Tabellen die nicht der Kollation ihrer Wünsche entspricht. Danach gehen sie jede einzelne
Spalte ihrer Tabellen durch und machen damit genau dasselbe.

Zuletzt sollten alle Tabellen und Spalten dieselbe Kollation aufweisen und ihre Fehlermeldung war einmal.

http://www.compusoft.li/images/icons/icon3.png Anmerkung:
Es versteht sich von selbst, dass vor Änderungen an einer Datenbank, eine Sicherung dieser zu
erstellen ist. Ein gutes Programm dafür ist 1582 mysqldumper (http://www.mysqldumper.de/).

Sarah15
07.06.2016, 16:57
Hi

Dies habe ich soweit erledigt bis auf zwei Tabelleneinträge (Spalten)
bei welchen immer eine Fehlermeldung erscheint.



"Fehlermeldung"
Column 'Name' cannot be part of FULLTEXT index"


Wie kriege ich das hin?

Admin
07.06.2016, 17:27
Hallo @Sarah

Das ist eine Gute Frage, nächste Frage :)

Es ist noch keinen Monat her, da hatte ich genau das gleiche Problem
bei der Konvertierung von Latin1_ci zu utf8_general_ci. Ich habe immer
und immer wieder versucht diese Spalten "umzuwandeln" jedoch ohne
Erfolg. Ich habe dann Herrn Google gefragt, was er zu dem ganzen meint.

Tatsächlich wurde ich fündig. Ich habe eine Professionelle Anleitung
gefunden, welche genau erklärt, wie verschiedene Kollationen in einer
sql db umgewandelt werden können. Da mein Englisch nicht allzu gut ist
und ich sql Befehle nur ausführe wenn ich genau weiss, was sie bewirken,
habe ich das Script nicht genutzt, jedoch gebe ich Ihnen gerne den Link
zu der Anleitung.

1580Link zur Anleitung (http://nicj.net/mysql-converting-an-incorrect-latin1-column-to-utf8/comment-page-1/#comment-1224923) -

Viel Glück.

Sarah15
07.06.2016, 19:56
Hi @Admin

Danke für die Antwort und den Link zur Anleitung.
Da ich mich weder mit SQL noch mit Php auskenne, muss ich leider passen.
In Deinem Beitrag schreibst Du, siehe unten !


Hallo @Sarah

Da mein Englisch nicht allzu gut ist
und ich SQL Befehle nur ausführe wenn ich genau weiß, was sie bewirken,
habe ich das Script nicht genutzt, jedoch gebe ich Ihnen gerne den Link
zu der Anleitung.



Da möchte ich doch fragen wie du letztendlich das Problem gelöst hast ?

mfg

Admin
07.06.2016, 20:36
@Sarah

Das ist wirklich Schade. Das Script ist wirklich gut und würde
bestimmt funktionieren. Mein Weg war sehr unvernünftig, da dies
mit einem Professionellen arbeiten nichts zu tun hat. Nichts desto
trotz, hat es bei mir geklappt.

Ich muss dazu Anmerken, meine drei Spalten die eine Umwandlung
nicht mitgemacht haben, waren für die Forensuche zuständig.

Ich habe die gesamte DB gesichert. (Backup) :ausrufzeichen:
Danach habe ich die Tabelle die die drei (bösen) Spalten enhielt über
MySqlAdmin exportiert. (Erneute Sicherung für mich.)
Danach habe ich mir die Exportierte SQL Datei mit Dreamweaver angesehen.



--
-- Datenbank: `DER DATENBANKNAME`
--

-- --------------------------------------------------------

--
-- Tabellenstruktur für Tabelle `searchcore_text`
--

CREATE TABLE IF NOT EXISTS `searchcore_text` (
`searchcoreid` int(10) unsigned NOT NULL,
`keywordtext` mediumtext CHARACTER SET (http://www.compusoft.li/misc.php?do=bbcode#highlight)utf8 (http://www.compusoft.li/misc.php?do=bbcode#highlight),
`title` varchar(254) CHARACTER SET (http://www.compusoft.li/misc.php?do=bbcode#highlight)utf8 (http://www.compusoft.li/misc.php?do=bbcode#highlight) NOT NULL DEFAULT '',
PRIMARY KEY (`searchcoreid`),
FULLTEXT KEY `text` (`title`,`keywordtext`)
) ENGINE=MyISAM DEFAULT CHARSET= (http://www.compusoft.li/misc.php?do=bbcode#highlight)utf8 (http://www.compusoft.li/misc.php?do=bbcode#highlight);

--
-- Daten für Tabelle `searchcore_text`
--



Die drei hervorgehobenen "utf8" Texte, wurden von mir eingefügt. Vorher stand da
(http://www.compusoft.li/misc.php?do=bbcode#highlight)latin1_swedish_ci (http://www.compusoft.li/misc.php?do=bbcode#highlight)

Ich habe die Datei als searchcore_text.sql gespeichert. Danach habe ich aus der Datenbank
die Tabelle searchcore_text gelöscht und meine gespeicherte Datei "searchcore_text.sql" in
meine "DER DATENBANKNAME" importiert. Danach Manuell die Kollation in utf8_general_ci
geändert und den Searchindex im AdminCp neu erstellen lassen.

Hat für mich toll geklappt, jedoch möchte ich dieses Vorgehen nicht an andere weiter
empfehlen.

:ausrufzeichen: Was immer Du tust, erstelle zuerst mindestens eine Sicherung deiner Daten !!!!!

Viel Glück !

Sarah15
08.06.2016, 15:23
Hi @Admin

Ich konnte meine zwei Spalten genau wie Du konvertieren.
Ob dies nun das Richtige war oder nicht ist nicht so wichtig.
Wir benutzen die Datenbank in einem Privaten Verein da konnte
ich das wagen. Herzlichen Dank für diesen guten Tipp !

mfg

Admin
08.06.2016, 17:34
Hallo @Sarah

Das finde ich Super.
Wer nicht wagt der nicht Gewinnt :D

Terminator
11.06.2016, 16:57
@Admin
Das war ein riskantes Vorgehen, jedoch spricht das Ergebnis für sich :daumenhoch:
Sehr interessanter Beitrag.
:pfeil:

Admin
11.06.2016, 22:02
@Admin
Das war ein riskantes Vorgehen, jedoch spricht das Ergebnis für sich :daumenhoch:
Sehr interessanter Beitrag.
:pfeil:

@Terminator

Das sehe ich genauso ! :p