我正在按照本指南(https://mathiasbynens.be/notes/mysql-utf8mb4)将MySQL数据库从utf8字符集迁移到uft8mb4。对于我更新的表之一(table1),我得到了来自information_schema的奇怪输出。 table1有四列,每列都列在下面:
data_store VARCHAR(24)
data_group VARCHAR(24)
source_count INT
load_count INT
我已经验证表格中只有4列出现SELECT *。但是,在information_schema上运行以下查询会产生奇数输出。
SELECT column_name, character_set_name FROM information_schema.COLUMNS
WHERE table_name = "table1";
COLUMN_NAME CHARACTER_SET_NAME
--------------------------------------------------------------------------------------
data_store utf8
data_group utf8
source_count <null>
load_count <null>
data_store utf8mb4
data_group utf8mb4
source_count <null>
load_count <null>
对于我更新过的任何其他表格,我都没有看到重复的行(具有不同的字符集),并且对于错误和/或如何解决它而感到茫然。任何帮助将不胜感激!
注意:我相信我可以从information_schema中删除不需要的列,但我不确定这是否会破坏任何内容。
答案 0 :(得分:1)
我认为您在几个不同的数据库模式中看到了来自不同table1
表的列。
尝试此操作以验证该声明。
SELECT table_schema, column_name, character_set_name
FROM information_schema.COLUMNS
WHERE table_name = 'table1'
尝试使用此查询按当前数据库进行过滤。
SELECT column_name, character_set_name
FROM information_schema.COLUMNS
WHERE table_name = 'table1'
AND table_schema = DATABASE()
不尝试以任何方式更改INFORMATION_SCHEMA数据库。不要删除行,不要添加列或其他任何内容。它应该是只读的。但有时它不是,并且改变它可能会破坏你的MySQL实例。不要问我怎么知道这件事。 : - )