it-swarm.com.de

Wie sehe ich, welcher Zeichensatz eine MySQL-Datenbank / -Tabelle / -Spalte ist?

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

  • MySQL-Datenbank

  • MySQL-Tabelle

  • MySQL-Spalte

602
Rory

So würde ich es machen -

Für Schemata:

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

Für Tabellen:

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 Spalten:

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

Für Spalten:

SHOW FULL COLUMNS FROM table_name;
448
serhat

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

215
J. Polfer

Für alle Datenbanken Sie haben auf dem Server:

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 | 
    +----------------------------+---------+

Abrufen der Sortierung für Tabellen:

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

ODER - gibt die vollständige SQL zum Erstellen der Tabelle aus:

mysql> show create table my_tablename


Abrufen der Sortierung 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  |
+---------+--------------+--------------------+ ....
131
Nabeel Ahmed

Für Tabellen:

SHOW TABLE STATUS listet alle Tabellen auf.

Filtern mit:

SHOW TABLE STATUS where name like 'table_123';
63
Vex

Für Datenbanken:

Verwenden Sie einfach diese Befehle:

USE db_name;
SELECT @@character_set_database;
-- or:
-- SELECT @@collation_database;
44
DC-
 SELECT TABLE_SCHEMA, 
 TABLE_NAME, 
 CCSA.CHARACTER_SET_NAME AS DEFAULT_CHAR_SET, 
 COLUMN_NAME, 
 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_C. COLLATION_NAME) 
 WHERE TABLE_SCHEMA = SCHEMA () 
 UND C.DATA_TYPE IN ('enum', 'varchar', 'char', 'text', 'mediumtext', 'longtext') 
 ORDER BY TABLE_SCHEMA, 
 TABLE_NAME, 
 COLUMN_NAME 
; 
31
Eric

So zeigen Sie die Standardkollatierung der Datenbank an:

USE db_name;
SELECT @@character_set_database, @@collation_database;

So zeigen Sie die Sortierung der Tabelle an:

SHOW TABLE STATUS where name like 'table_name';

So zeigen Sie die Sortierung der Spalten an:

SHOW FULL COLUMNS FROM table_name;
24
user1012513

Ich schaue immer nur auf SHOW CREATE TABLE mydatabase.mytable.

Für die Datenbank müssen Sie sich anscheinend SELECT DEFAULT_CHARACTER_SET_NAME FROM information_schema.SCHEMATA ansehen.

23
chaos

Für Tabellen und Spalten:

show create table your_table_name
21
James

Für Datenbanken:

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

Beispielausgabe:

mysql> SELECT SCHEMA_NAME 'database', default_character_set_name 'charset', DEFAULT_COLLATION_NAME 'collation' FROM information_schema.SCHEMATA;
+----------------------------+---------+--------------------+
| database                   | charset | collation          |
+----------------------------+---------+--------------------+
| information_schema         | utf8    | utf8_general_ci    |
| drupal_demo1               | utf8    | utf8_general_ci    |
| drupal_demo2               | utf8    | utf8_general_ci    |
| drupal_demo3               | utf8    | utf8_general_ci    |
| drupal_demo4               | utf8    | utf8_general_ci    |
| drupal_demo5               | latin1  | latin1_swedish_ci  |

...

+----------------------------+---------+--------------------+
55 rows in set (0.00 sec)

mysql> 
17
sjas

Für Datenbanken:

SHOW CREATE DATABASE "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

15
amenko

Wie viele zuvor geschrieben haben, sollte SHOW FULL COLUMNS die bevorzugte Methode sein, um Spalteninformationen abzurufen. Was fehlt, ist eine Möglichkeit, danach einen Zeichensatz zu erhalten, ohne direkt auf Metadatentabellen zuzugreifen:

SHOW FULL COLUMNS FROM my_table WHERE Field = 'my_field'
SHOW COLLATION WHERE Collation = 'collation_you_got'
4
WowPress.host