Bug #46239 mysql doesn't show what collation was used if that collation is the default
| Submitted: | 16 Jul 2009 19:06 | Modified: | 19 Mar 2018 17:56 |
|---|---|---|---|
| Reporter: | Shane Bester (Platinum Quality Contributor) | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: DDL | Severity: | S4 (Feature request) |
| Version: | 5.0.82, 5.1.37 | OS: | Any |
| Assigned to: | Assigned Account | CPU Architecture: | Any |
[16 Jul 2009 19:06]
Shane Bester
[16 Jul 2009 19:21]
Valeriy Kravchuk
Thank you for the bug report. Verified just as described with recent bzr threes:
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.0.85 |
+-----------+
1 row in set (0.00 sec)
mysql> drop table if exists t1,t2;
Query OK, 0 rows affected, 2 warnings (0.00 sec)
mysql> create table t1(a char(1) charset utf8 collate utf8_general_ci)
-> charset=latin1;
Query OK, 0 rows affected (0.00 sec)
mysql> create table t2(a char(1) charset utf8 collate utf8_bin)
-> charset=latin1;
Query OK, 0 rows affected (0.01 sec)
mysql> show create table t1;
+-------+----------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+----------------------------------------------------------------------------------------------------------+
| t1 | CREATE TABLE `t1` (
`a` char(1) character set utf8 default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 |
+-------+----------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> show create table t2;
+-------+---------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+---------------------------------------------------------------------------------------------------------------------------+
| t2 | CREATE TABLE `t2` (
`a` char(1) character set utf8 collate utf8_bin default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 |
+-------+---------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
[16 Jul 2009 21:07]
Peter Laursen
huh .. I thought it was a *feature*! no collation displayed => default collation was defined. 9 months since I first noticed this!
[21 Jul 2009 5:10]
Alexander Barkov
This is an intentional behaviour, to reduce "SHOW CREATE TABLE" output size. However, having a full "CREATE TABLE" could be useful in some cases. Reasonable feature request.
[21 Jul 2009 5:11]
Alexander Barkov
One more comment: it works this way since version 4.1.0 when we introduced collations in MySQL. There's no regression here.
[9 Dec 2009 7:35]
Shane Bester
Bar, reducing the output size of SHOW CREATE TABLE is not a useful argument here. What we need is accurate information!
[15 Dec 2009 7:35]
Alexander Barkov
Shane, I agree full information is better for reading dumps or seeing at "SHOW CREATE TABLE" output. So this is a reasonable feature request. However, from dumping and restoring point of view it's safe anyway. Even if mysql was compiled for example "--default-character-set=utf8 --default-collation=utf8_unicode_ci" it only means that when you do "CREATE DATABASE", you get "CHARACTER SET utf8 COLLATE utf8_unicode_ci" by default. The default collation for utf8 is STILL utf8_general_ci. So there's no any ambiguity depending on compilation flags here. If the future we'll probably allow to change the default collation for a character set. So full information will be important someday!
[7 Nov 2017 6:39]
Shane Bester
this bug comes to light now that 8.0 has different default collation for utf8mb4 See: https://bugs.mysql.com/bug.php?id=88373
[9 Jan 2018 20:44]
Sven Sandberg
Workaround: SELECT TABLE_COLLATION FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = name; SELECT COLLATION_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = name;
[19 Mar 2018 17:56]
Paul DuBois
Posted by developer: Fixed in 8.0.11. Previously, SHOW CREATE TABLE did not show collation for a column if the collation was the same as the table default, even if the collation was explicitly specified at table-creation time. Now, SHOW CREATE TABLE always shows the column collation if the collation was explicitly specified, even if the collation is the same as the table default.
[12 Apr 2018 5:39]
Erlend Dahl
Bug#89606 PLEASE PRINT DEFAULT COLLATION IN DUMP/PUMP/SHOW CREATE TABLE Bug#89241 Modify SHOW CREATE TABLE to provide full charset and collation were marked as duplicates.
[4 Mar 2024 5:05]
Shane Bester
see https://bugs.mysql.com/bug.php?id=114195
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.046 sec. using MySQL 8.4.7-u6-cloud
Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the
respective copyright holders.
It is not reviewed in advance
by Oracle and does not necessarily represent the opinion of
Oracle or any other party.