首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将MySQL5.1转储导入5.5时出现“显示列的宽度超出范围”错误

将MySQL5.1转储导入5.5时出现“显示列的宽度超出范围”错误
EN

Database Administration用户
提问于 2014-04-17 17:41:10
回答 1查看 3.5K关注 0票数 1

我正在迁移到一个新服务器,并试图将我的数据库从5.1服务器移动到5.5服务器。

我创建了一个

代码语言:javascript
运行
复制
mysqldump -u root -p --add-drop-database --triggers dbname > dbname.sql

当我试图在新服务器上还原它时,我会得到一个错误:

代码语言:javascript
运行
复制
mysql -u root -p dbname < dbname.sql
ERROR 1439 (42000) at line nnnn: Display width out of range for column 'ID' (max = 255)

酒馆。定义为ID bigint(1536)

编辑:它试图还原的表实际上是一个视图。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2014-04-23 11:53:18

这可能是您正在运行的MySQL 5.1版本中的一个bug,导致服务器在使用DESCRIBE来了解视图的组合时向mysqldump提供不正确的元数据。

http://bugs.mysql.com/bug.php?id=65379

背景:在创建引用表的视图时,必须先存在该表,然后才能创建引用该表的视图。因此,mysqldump创建所有表,然后创建所有视图。它解决了“视图依赖于表”的问题.但是,当视图引用其他视图时,引用的视图也必须存在于可以创建引用的视图之前。为了绕过这些半圆依赖关系而不必实际解决它们,mysqldump为每个视图生成一个虚拟占位符表,该视图首先具有相同的列.然后,删除每个虚拟表并用实际视图替换它。

错误导致mysqldump为这些虚拟占位符表生成无效的CREATE TABLE语句。

您可以通过修复虚拟表定义来手动编辑现有的dumpfile,或者升级旧服务器并重新运行转储,或者--可能的话--使用最新的GA版本的MySQL附带的mysqldump版本,这个版本(我在内存中工作)还可能包含一个解决方案,避免在服务器返回无意义的元数据时生成错误的语句。版本的mysqldump为5.6是向后兼容的5.1服务器,排除错误或回归。

如果您没有依赖于这些视图的任何视图,您应该能够简单地从转储文件中移除虚拟表定义,然后这些文件应该没有问题地加载。

下面是一个垃圾文件中的一个例子,其中去除了一些噪音。

对于其他表,在删除目标上已经存在的任何表或视图后,将创建虚拟表:

代码语言:javascript
运行
复制
--
-- Temporary table structure for view `staff_list`
--

DROP TABLE IF EXISTS `staff_list`;
/*!50001 DROP VIEW IF EXISTS `staff_list`*/;

...

/*!50001 CREATE TABLE `staff_list` (
 `ID` tinyint NOT NULL,

...

) ENGINE=MyISAM */;

然后,在转储文件中,删除占位符表,创建真正的视图:

代码语言:javascript
运行
复制
--
-- Final view structure for view `staff_list`
--

/*!50001 DROP TABLE IF EXISTS `staff_list`*/;
/*!50001 DROP VIEW IF EXISTS `staff_list`*/;

/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`mezzell`@`%` SQL SECURITY DEFINER */
/*!50001 VIEW `staff_list` AS select `s`.`staff_id` AS `ID` ...
票数 3
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/63437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档