![]() |
Datenbank: MySQL • Version: 4.1.15 • Zugriff über: PHP
MySQL und Collations
Hallo!
Ich habe bis jetzt immer MySQL 4.0.21 auf meinem Webserver laufen. Durch einen Serverwechselt wechselte ich auch die Version auf 4.1.15. Jedenfalls gibts da jetzt so eine Option, dass man die "Collation" für jede Datenbank, für jede Tabelle und sogar jedes Textfeld (CHAR, VARCHAR, TEXT, BLOB) setzen muss. Ich weiß nichtmal genau was das ist (Zeichensatz?), aber jedenfalls war alles standardmäßig auf latin1_swedish_ci gestellt. Ich dachte mir, dass das unnötig sei, einen Schwedischen Zeichensatz zu benutzen und stellte alles auf utf5_general_ci bzw utf5_bin. Eigentlich funktioniert das auch ganz gut, aber bei einer UNION Abfrage gibts Probleme:
Code:
Ich denke mal, dass die Connecion, die auch das Query ausführt, auf latin1_swedish_ci läuft, ich aber ALLE (wirklich alle, hab ich überprüft) Datenbanken, Tabellen und Felder auf utf8_unicode_ci stellte.
Illegal mix of collations (latin1_swedish_ci,COERCIBLE) and (utf8_unicode_ci,IMPLICIT) for operation 'UNION'
Wie kann ich das lösen? Wo genau liegt der Unterschied zwischen latin1, utf8, ascii etc.? Welche Auswirkungen hat das? Grüße Faux |
Re: MySQL und Collations
Guten Morgen.
Zitat:
Die Macher von MySQL liefern ihr DBMS mit einer Grundeinstellung aus: Im Handbuch zu Version 4.0.5 steht 4.6 MySQL Localisation and International Usage 4.6.1 The Character Set Used for Data and Sorting By default, MySQL uses the ISO-8859-1 (Latin1) character set with sorting according to Swedish/Finnish. This is the character set suitable in the USA and western Europe. Schau doch mal in das entsprechende Kapitel des Handbuchs. Dort stehen eine ganze Reihe hilfreiche Angaben zur Vorgehensweise, wenn du deine Installation auf German umstellen möchtest. Grüße vom marabu |
Re: MySQL und Collations
Gibts ne Möglichkeit alle Textfelder in der ganzen DB auf eine andere Collation zu setzen?
Grüße Faux |
Re: MySQL und Collations
Sicher - im schlimmsten Fall über ein Schleifenkonstrukt. Schau mal was die Befehle ALTER SCHEMA bzw. ALTER TABLE in deiner Version von MySQL in dieser Hinsicht leisten. Hier ein Fundstück aus dem Netz auf der Basis von PHP:
Code:
Vielleicht regt das deine Phantasie etwas an? Überlege auch frühzeitig ob latin1_german1 oder latin1_german2 interessanter für dich ist.
<?php
global $db_url; $database = parse_url($db_url); $result = db_query('show tables'); while($tables = db_fetch_array($result)) { foreach ($tables as $key => $value) { db_queryd("ALTER TABLE %s COLLATE utf8_general_ci",$value); } } ?> Freundliche Grüße marabu |
Re: MySQL und Collations
Setze doch für die gesamte Datenbank im CREATE/ALTER-Database die Collation und nicht auf Tabellen/Feldebene.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz