我是MySQL的新手。当我将列声明为VARCHAR时,为什么它会自动更改为VARBINARY?我该怎么避免这件事?

Database changed
mysql> CREATE TABLE sync(
-> vlan_id INT NOT NULL,
-> vlan_name VARCHAR(90) NOT NULL,
-> vlan_description VARCHAR(100) NOT NULL,
-> PRIMARY KEY(vlan_id)
-> );Database changed
mysql> SHOW CREATE TABLE sync;
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| sync | CREATE TABLE `sync` (
`vlan_id` int(11) NOT NULL,
`vlan_name` varbinary(90) NOT NULL,
`vlan_description` varbinary(100) NOT NULL,
PRIMARY KEY (`vlan_id`)
) ENGINE=InnoDB DEFAULT CHARSET=binary |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql>发布于 2019-08-08 12:46:05
我猜您将binary作为服务器和/或数据库的默认字符集。您可能希望更改此设置,以防止下次创建表时发生相同的事情。
您可以通过运行:SHOW VARIABLES LIKE 'character_set_server';和SHOW CREATE DATABASE the_database_name;来检查
如果数据库没有字符集,那么将使用服务器字符集。
可以使用如下命令更改数据库字符集:
ALTER DATABASE the_database_name CHARACTER SET = 'utf8';可以使用如下命令设置服务器字符集:
SET character_set_server = 'utf8';(对在当前会话之外设置的设置使用SET GLOBAL ...。或者您可以在您的配置文件中设置它,这样它才能在重新启动时存活下来。)
https://dba.stackexchange.com/questions/244614
复制相似问题