796 Stimmen

Wie kann ich sehen, welchen Zeichensatz eine MySQL-Datenbank/Tabelle/Spalte hat?

Was ist der (Standard-)Zeichensatz für:

  • MySQL-Datenbank

  • MySQL-Tabelle

  • MySQL-Spalte

2 Stimmen

Für Tabellen und Spalten, verwenden Sie einfach SHOW CREATE TABLE wie erörtert in stackoverflow.com/questions/57628217/

929voto

Zenshai Punkte 9707

Ich würde es folgendermaßen machen

Für Schemas (oder Datenbanken - sie sind Synonyme):

SELECT default_character_set_name FROM information_schema.SCHEMATA 
WHERE schema_name = "schemaname";

Für Tische:

SELECT CCSA.character_set_name FROM information_schema.`TABLES` T,
       information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` CCSA
WHERE CCSA.collation_name = T.table_collation
  AND T.table_schema = "schemaname"
  AND T.table_name = "tablename";

Für Kolumnen:

SELECT character_set_name FROM information_schema.`COLUMNS` 
WHERE table_schema = "schemaname"
  AND table_name = "tablename"
  AND column_name = "columnname";

4 Stimmen

Es sollte beachtet werden, dass information_schema nur in MySQL 5 aufwärts ist, glaube ich.

5 Stimmen

Soweit ich weiß, kommen Sie dem Abrufen spaltenspezifischer Zeichensatzinformationen in MySQL < 5 am nächsten, wenn Sie SHOW FULL COLUMNS FROM tableName ausführen

22 Stimmen

Diese Antwort war sehr hilfreich, aber wenn Sie ein character_set / collation-Problem beheben wollen, müssen Sie wahrscheinlich auch connection character_set, client_character_set usw. überprüfen: SHOW VARIABLES LIKE 'character_set%'; SHOW VARIABLES LIKE 'collation%';

538voto

serhat Punkte 5165

Para Spalten :

SHOW FULL COLUMNS FROM table_name;

48 Stimmen

Hallo, hier spricht die Zukunft! Für alle, die diese Antwort überprüfen: Diese Methode zeigt nur die Kollation und nicht den Zeichensatz an. Ich glaube, das hat sich mit MySQL 5 geändert (siehe Antwort mit mehr Punkten für eine bessere Methode).

32 Stimmen

@fideloper, Anhand der Sortierung können Sie den Zeichensatz erkennen. Das liegt daran, dass der erste Teil der Sortierung den Zeichensatz enthält, z. B. wenn die Sortierung latin1_swedish_ci kann der Zeichensatz nicht etwas anderes sein als latin1 . Wenn die Sortierung utf8mb4_general_ci kann der Zeichensatz nicht etwas anderes sein als utf8mb4 .

1 Stimmen

Hier wird der Zeichensatz der Tabelle angegeben. Es sagt Ihnen nicht den Zeichensatz von Tabellen, die in der Zukunft erstellt werden, wenn kein Zeichensatz in der Syntax von create table angegeben ist (dafür benötigen Sie den Schemazeichensatz).

240voto

J. Polfer Punkte 11731

Para Datenbanken :

USE your_database_name;
show variables like "character_set_database";
-- or:
-- show variables like "collation_database";

Vgl. diese Seite . Und sehen Sie sich das MySQL-Handbuch an

4 Stimmen

Dies beantwortet nur 1/3 der Frage.

1 Stimmen

@TobyJ, ich sehe nicht, dass du dich beschwerst stackoverflow.com/a/4805510/632951

0 Stimmen

Wofür steht cf? der link existiert allerdings nicht. @Pacerier

194voto

Nabeel Ahmed Punkte 16621

Für alle Datenbanken die Sie auf dem Server haben:

mysql> SELECT SCHEMA_NAME 'database', default_character_set_name 'charset', DEFAULT_COLLATION_NAME 'collation' FROM information_schema.SCHEMATA;

Ausgabe:

+----------------------------+---------+--------------------+
| database                   | charset | collation          |
+----------------------------+---------+--------------------+
| information_schema         | utf8    | utf8_general_ci    |
| my_database                | latin1  | latin1_swedish_ci  |
...
+----------------------------+---------+--------------------+

Für eine einzelne Datenbank :

mysql> USE my_database;
mysql> show variables like "character_set_database";

Ausgabe:

    +----------------------------+---------+
    | Variable_name              |  Value  |
    +----------------------------+---------+
    | character_set_database     |  latin1 | 
    +----------------------------+---------+

Zusammenstellung der Daten für Tische :

mysql> USE my_database;
mysql> SHOW TABLE STATUS WHERE NAME LIKE 'my_tablename';

OR - gibt das komplette SQL für die Erstellung der Tabelle aus:

mysql> show create table my_tablename


Die Zusammenstellung von Spalten :

mysql> SHOW FULL COLUMNS FROM my_tablename;

Ausgabe:

+---------+--------------+--------------------+ ....
| field   | type         | collation          |
+---------+--------------+--------------------+ ....
| id      | int(10)      | (NULL)             |
| key     | varchar(255) | latin1_swedish_ci  |
| value   | varchar(255) | latin1_swedish_ci  |
+---------+--------------+--------------------+ ....

0 Stimmen

Für welche Version von mysql wird diese Ausgabe angezeigt type ? Ich habe mysql 5.7.9 und type zeigen die data type der Spalte nicht die character set . Manche mögen int(10) varchar(255) ... usw. und nicht utf8

0 Stimmen

Meine Ausgabe zeigt type als die data type auch @MTK, vielleicht ist oben ein Copy-Paste-Fehler im Abschnitt "output:".

75voto

Vex Punkte 1469

Para Tabellen :

SHOW TABLE STATUS werden alle Tabellen aufgelistet.

Filter verwenden:

SHOW TABLE STATUS where name like 'table_123';

9 Stimmen

Bitte beachten. Die in show table status angezeigte Sortierung ist nicht der Zeichensatz der Tabelle. Die Kollation gibt an, wie die Zeichen sortiert / verglichen werden. z.B. utf8_bin_ci vergleicht Daten ohne Berücksichtigung der Groß-/Kleinschreibung (case insensitive, also "m" und "M" sind gleich), utf8_bin_cs vergleicht mit Groß-/Kleinschreibung (also "m" und "M" sind verschieden). Dies ist nicht dasselbe wie der Zeichensatz einer Tabelle.

9 Stimmen

@Daan, hören Sie auf, Fehlinformationen zu verbreiten. Siehe stackoverflow.com/questions/1049728/ Anhand der Sortierung können Sie den Zeichensatz bestimmen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X