AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

MySQL und Collations

Ein Thema von faux · begonnen am 17. Sep 2006 · letzter Beitrag vom 17. Sep 2006
Antwort Antwort
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#1

MySQL und Collations

  Alt 17. Sep 2006, 07:28
Datenbank: MySQL • Version: 4.1.15 • Zugriff über: PHP
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:
Illegal mix of collations (latin1_swedish_ci,COERCIBLE) and (utf8_unicode_ci,IMPLICIT) for operation 'UNION'
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.
Wie kann ich das lösen?
Wo genau liegt der Unterschied zwischen latin1, utf8, ascii etc.? Welche Auswirkungen hat das?

Grüße
Faux
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: MySQL und Collations

  Alt 17. Sep 2006, 08:11
Guten Morgen.

Zitat von faux:
Wo genau liegt der Unterschied zwischen latin1, utf8, ascii etc.?
Vereinfacht ausgedrückt: Ein character set ordnet jedem Bild eines Buchstaben (glyph) einen Code zu. Eine Collation ordnet jedem Code eine Ordnungszahl zu, wodurch eine sinnvolle Sortierung erst möglich wird. US-ASCII ist der fast allen single-byte character sets zugrunde liegende 7 bit subset (code 0 bis 127). UTF8 ist ein multi-byte character set, der double-byte Unicode (UTF16) über einen byte-stream codiert, so dass man single-byte code libraries verwenden kann. LATIN1 ermöglicht in der SBCS-Welt eine Lokalisierung, die auch unter verschiedenen Betriebsystemen reibungslos funktioniert.

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
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: MySQL und Collations

  Alt 17. Sep 2006, 09:53
Gibts ne Möglichkeit alle Textfelder in der ganzen DB auf eine andere Collation zu setzen?

Grüße
Faux
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: MySQL und Collations

  Alt 17. Sep 2006, 14:19
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:
<?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);
  }
}
?>
Vielleicht regt das deine Phantasie etwas an? Überlege auch frühzeitig ob latin1_german1 oder latin1_german2 interessanter für dich ist.

Freundliche Grüße

marabu
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: MySQL und Collations

  Alt 17. Sep 2006, 19:14
Setze doch für die gesamte Datenbank im CREATE/ALTER-Database die Collation und nicht auf Tabellen/Feldebene.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz