Was ist der (Standard-)Zeichensatz für:
-
MySQL-Datenbank
-
MySQL-Tabelle
-
MySQL-Spalte
Was ist der (Standard-)Zeichensatz für:
MySQL-Datenbank
MySQL-Tabelle
MySQL-Spalte
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";
Es sollte beachtet werden, dass information_schema nur in MySQL 5 aufwärts ist, glaube ich.
Soweit ich weiß, kommen Sie dem Abrufen spaltenspezifischer Zeichensatzinformationen in MySQL < 5 am nächsten, wenn Sie SHOW FULL COLUMNS FROM tableName ausführen
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%';
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).
@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
.
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
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 |
+---------+--------------+--------------------+ ....
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
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.
@Daan, hören Sie auf, Fehlinformationen zu verbreiten. Siehe stackoverflow.com/questions/1049728/ Anhand der Sortierung können Sie den Zeichensatz bestimmen.
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.
2 Stimmen
Für Tabellen und Spalten, verwenden Sie einfach
SHOW CREATE TABLE
wie erörtert in stackoverflow.com/questions/57628217/