Zu beachten ist, dass information_schema meiner Meinung nach nur in MySQL 5 verfügbar ist.
Vex
4
Soweit ich sagen kann, können Sie dem Abrufen spaltenspezifischer Zeichensatzinformationen in MySQL <5
Robin Winslow
14
Diese Antwort war sehr hilfreich, aber wenn Sie ein Problem mit dem Zeichensatz / der Sortierung beheben möchten, müssen Sie wahrscheinlich auch die Verbindung Zeichensatz, Client-Zeichensatz usw. überprüfen: VARIABLEN WIE 'Zeichensatz%' ANZEIGEN; SHOW VARIABLES LIKE 'collation%';
BenL
2
Die Tabellenoperation gibt für mich "Leere Menge (0,00 Sek.)" zurück
minhajul
9
Für Schema-Dummies: Beachten Sie, dass dies schemanamemöglicherweise nur der Datenbankname ist.
Hallo, das ist die Zukunft! Für alle, die diese Antwort überprüfen, zeigt diese Methode nur die Sortierung und nicht den Zeichensatz. Ich glaube, dass sich dies bei MySQL 5 geändert hat (siehe Antwort mit mehr Punkten für eine bessere Methode).
Fideloper
20
@fideloper, Mit der Sortierung können Sie den Zeichensatz erkennen. Dies liegt daran, dass der erste Teil der Sortierung den Zeichensatz enthält. Wenn es sich beispielsweise um eine Kollatierung handelt latin1_swedish_ci, kann der Zeichensatz nichts anderes sein latin1. Wenn die Sortierung lautet utf8mb4_general_ci, kann der Zeichensatz nichts anderes sein utf8mb4.
Pacerier
1
Hier erfahren Sie den Tabellenzeichensatz. Es zeigt Ihnen nicht den Zeichensatz von Tabellen an, die in Zukunft erstellt wurden, wenn in der Syntax zum Erstellen von Tabellen kein Zeichensatz angegeben ist (dafür benötigen Sie den Schemazeichensatz).
HoldOffHunger
217
Für Datenbanken :
USE your_database_name;
show variables like"character_set_database";-- or:-- show variables like "collation_database";
Vgl. diese Seite . Und lesen Sie das MySQL-Handbuch
Für welche MySQL-Version wird diese Ausgabe angezeigt type? Ich habe MySQL 5.7.9 und typezeige das data typeder Spalte nicht das character set. Einige mögen int(10)varchar(255)... etc und nichtutf8
MTK
Meine Ausgabe zeigt typeauch das data type@MTK, vielleicht ist oben ein Fehler beim Kopieren und Einfügen im Abschnitt "Ausgabe:".
Bitte beachten Sie. Die im Status show show angezeigte Sortierung ist nicht der Zeichensatz der Tabelle. Die Sortierung zeigt Ihnen, wie die Zeichen sortiert / verglichen werden. Beispiel: utf8_bin_ci vergleicht Daten ohne Berücksichtigung des Falls (Groß- und Kleinschreibung wird nicht berücksichtigt, daher sind "m" und "M" gleich). Utf8_bin_cs vergleicht die Groß- und Kleinschreibung (also unterscheiden sich "m" und "M"). Dies ist nicht dasselbe wie der Zeichensatz einer Tabelle.
SELECT TABLE_SCHEMA,
TABELLENNAME,
CCSA.CHARACTER_SET_NAME AS DEFAULT_CHAR_SET,
SPALTENNAME,
COLUMN_TYPE,
C.CHARACTER_SET_NAME
FROM information_schema.TABLES AS T.
JOIN information_schema.COLUMNS AS C USING (TABLE_SCHEMA, TABLE_NAME)
JOIN information_schema.COLLATION_CHARACTER_SET_APPLICABILITY AS CCSA
ON (T.TABLE_COLLATION = CCSA.COLLATION_NAME)
WHERE TABLE_SCHEMA = SCHEMA ()
AND C.DATA_TYPE IN ('enum', 'varchar', 'char', 'text', 'mediumtext', 'longtext')
ORDER BY TABLE_SCHEMA,
TABELLENNAME,
SPALTENNAME
;;
in MySQL-Datenbanken können Standardzeichensätze haben
James
3
select default_character_set_name from information_schema.schemataist nicht genug, weil Sie nicht sagen können, welche Zeile mit welcher Datenbank korreliert. Verwenden Sie select default_character_set_name,schema_name from information_schema.schemataoder einfach : select*from information_schema.schemata.
Pacerier
Ich habe verwendet SELECT * FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '<database-name>' \G; und es hat super funktioniert :) Danke!
Sankalp
23
So zeigen Sie die Standardkollatierung der Datenbank an:
USE db_name;SELECT@@character_set_database,@@collation_database;
So zeigen Sie die Zusammenstellung der Tabelle an:
@ Pacerier hast du meine Antwort tatsächlich richtig mit diesen verglichen?
Sjas
15
Für Datenbanken :
SHOW CREATEDATABASE"DB_NAME_HERE";
Beim Erstellen einer Datenbank (MySQL) ist der Standardzeichensatz / die Standardkollatierung immer LATIN, stattdessen haben Sie beim erstmaligen Erstellen Ihrer Datenbank einen anderen ausgewählt
Das in MySQL für "Standardzeichensatz / Kollatierung ist immer LATIN" erforderliche Zitat .
Pacerier
Zitat benötigt? Haben Sie jemals eine MySQL-Datenbank verwendet? Jeder weiß, dass der Standardzeichensatz / die Standardkollatierung darin besteht, latin1_swedish_cidass Monty Widenius, der Schöpfer von MySQL, schwedisch ist und nicht so groß gedacht hat, wie er es zu Beginn haben sollte.
Spencer Williams
5
Wie viele zuvor geschrieben haben, sollte SHOW FULL COLUMNS die bevorzugte Methode sein, um Spalteninformationen abzurufen. Was fehlt, ist eine Möglichkeit, einen Zeichensatz danach abzurufen, ohne die Metadatentabellen direkt zu erreichen:
SHOW FULL COLUMNS FROM my_table WHERE Field ='my_field'
SHOW COLLATION WHERE Collation ='collation_you_got'
SHOW CREATE TABLE
, wie unter stackoverflow.com/questions/57628217/…Antworten:
So würde ich es machen -
Für Schemas (oder Datenbanken - sie sind Synonyme):
Für Tabellen:
Für Spalten:
quelle
schemaname
möglicherweise nur der Datenbankname ist.Für Spalten :
quelle
latin1_swedish_ci
, kann der Zeichensatz nichts anderes seinlatin1
. Wenn die Sortierung lautetutf8mb4_general_ci
, kann der Zeichensatz nichts anderes seinutf8mb4
.Für Datenbanken :
Vgl. diese Seite . Und lesen Sie das MySQL-Handbuch
quelle
Für alle Datenbanken, die Sie auf dem Server haben:
Ausgabe:
Für eine einzelne Datenbank :
Ausgabe:
Abrufen der Sortierung für Tabellen :
ODER - gibt das vollständige SQL für die Erstellungstabelle aus:
mysql> show create table my_tablename
Erhält die Sortierung von Spalten :
Ausgabe:
quelle
type
? Ich habe MySQL 5.7.9 undtype
zeige dasdata type
der Spalte nicht dascharacter set
. Einige mögenint(10)
varchar(255)
... etc und nichtutf8
type
auch dasdata type
@MTK, vielleicht ist oben ein Fehler beim Kopieren und Einfügen im Abschnitt "Ausgabe:".Für Tabellen :
SHOW TABLE STATUS
listet alle Tabellen auf.Filtern mit:
quelle
Für Datenbanken :
Verwenden Sie einfach diese Befehle:
quelle
quelle
Ich schaue immer nur an
SHOW CREATE TABLE mydatabase.mytable
.Für die Datenbank scheint es, dass Sie sich ansehen müssen
SELECT DEFAULT_CHARACTER_SET_NAME FROM information_schema.SCHEMATA
.quelle
select default_character_set_name from information_schema.schemata
ist nicht genug, weil Sie nicht sagen können, welche Zeile mit welcher Datenbank korreliert. Verwenden Sieselect default_character_set_name,schema_name from information_schema.schemata
oder einfach :select*from information_schema.schemata
.SELECT * FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '<database-name>' \G;
und es hat super funktioniert :) Danke!So zeigen Sie die Standardkollatierung der Datenbank an:
So zeigen Sie die Zusammenstellung der Tabelle an:
So zeigen Sie die Sortierung der Spalten an:
quelle
Für Tabellen und Spalten :
quelle
Für Datenbanken :
Beispielausgabe:
quelle
Für Datenbanken :
Beim Erstellen einer Datenbank (MySQL) ist der Standardzeichensatz / die Standardkollatierung immer LATIN, stattdessen haben Sie beim erstmaligen Erstellen Ihrer Datenbank einen anderen ausgewählt
quelle
latin1_swedish_ci
dass Monty Widenius, der Schöpfer von MySQL, schwedisch ist und nicht so groß gedacht hat, wie er es zu Beginn haben sollte.Wie viele zuvor geschrieben haben, sollte SHOW FULL COLUMNS die bevorzugte Methode sein, um Spalteninformationen abzurufen. Was fehlt, ist eine Möglichkeit, einen Zeichensatz danach abzurufen, ohne die Metadatentabellen direkt zu erreichen:
quelle