AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 63437
Accepted
chris
chris
Asked: 2014-04-18 09:41:10 +0800 CST2014-04-18 09:41:10 +0800 CST 2014-04-18 09:41:10 +0800 CST

Erro "Exibir largura fora do intervalo da coluna" ao importar mysql 5.1 dump para 5.5

  • 772

Estou migrando para um novo servidor e tentando mover meu banco de dados de um servidor 5.1 para 5.5.

Eu criei um dump com

mysqldump -u root -p --add-drop-database --triggers dbname > dbname.sql

Quando tento restaurá-lo no novo servidor, recebo um erro:

mysql -u root -p dbname < dbname.sql
ERROR 1439 (42000) at line nnnn: Display width out of range for column 'ID' (max = 255)

O col. é definido como ID bigint(1536).

Editar: a tabela que está tentando restaurar é, na verdade, uma exibição.

mysql mysqldump
  • 1 1 respostas
  • 3354 Views

1 respostas

  • Voted
  1. Best Answer
    Michael - sqlbot
    2014-04-24T03:53:18+08:002014-04-24T03:53:18+08:00

    É provável que seja um bug na versão do MySQL 5.1 que você está executando, fazendo com que o servidor forneça metadados incorretos mysqldumpquando ele usa DESCRIBEpara aprender sobre a composição de visualizações.

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

    Plano de fundo: sempre que você cria uma visão que faz referência a uma tabela, essa tabela já deve existir antes que você possa criar uma visão que a faça referência. Por esse motivo, o mysqldump cria todas as tabelas e, em seguida, todas as visualizações. Isso resolve o problema "exibições dependem de tabelas"... mas quando as exibições fazem referência a outras exibições, a exibição referenciada também deve existir antes que uma exibição que faça referência a ela possa ser criada. Para contornar essas dependências semicirculares sem ter que realmente resolvê-las, o mysqldump gera uma tabela fictícia de espaço reservado para cada exibição, com as mesmas colunas que a exibição tem, primeiro ... e depois descarta cada tabela fictícia e a substitui pela atual Visão.

    O bug faz com que o mysqldump gere CREATE TABLEinstruções inválidas para essas tabelas fictícias de espaço reservado.

    Você pode editar o dumpfile existente manualmente corrigindo a definição da tabela fictícia, ou atualizar o servidor antigo e executar novamente o dump, ou -- possivelmente -- usar a versão do mysqldump que vem com a versão GA mais recente do MySQL, que (estou trabalhando da memória, aqui) também pode conter uma solução alternativa que evita a tentativa de gerar declarações incorretas quando o servidor retorna metadados sem sentido. A versão do mysqldump para 5.6 é compatível com servidores 5.1, exceto bugs ou regressões.

    Se você não tiver nenhuma visualização dependendo dessas visualizações, poderá simplesmente remover as definições da tabela fictícia dos arquivos de despejo, que devem ser carregados sem problemas.

    Aqui está um exemplo de um dumpfile, com algum ruído removido.

    Com as demais tabelas, é criada a tabela fictícia, após descartar qualquer tabela ou view que já exista no destino:

    --
    -- 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 */;
    

    Então, muito mais abaixo no arquivo de despejo, a tabela de espaço reservado é descartada e a visualização real é criada:

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

relate perguntas

  • Existem ferramentas de benchmarking do MySQL? [fechado]

  • Onde posso encontrar o log lento do mysql?

  • Como posso otimizar um mysqldump de um banco de dados grande?

  • Quando é o momento certo para usar o MariaDB em vez do MySQL e por quê?

  • Como um grupo pode rastrear alterações no esquema do banco de dados?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve