Pergunta

Eu tenho um arquivo .sql e quero carregá-lo no banco de dados MySQL. Eu não sei de qual banco de dados (MySQL ou MS-SQL) foi criado.

Agora, eu estou tentando importar o arquivo no banco de dados MySQL. Ele está mostrando erros durante a importação e executar esse arquivo.

Q1. Então, minha pergunta é se o ficheiro.sql gerado a partir do MySQL e MS-SQL são diferentes?

Nota:. Eu estou usando software SQLyog (interface gráfica para o MySQL) para importar o arquivo

Aqui está o erro:

Inquérito: CRIAR ads TABLE ( bigint id (20) auto_increment NOT NULL, int city_id (11) NOT NULL, Agrupar texto type utf8_bin NOT NULL, Agrupar texto town utf8_bin NOT NULL, Agrupar texto address utf8_bin NOT NULL, Agrupar texto price utf8_bin NOT NULL, Agrupar texto info utf8_bin NOT NULL, Agrupar texto link utf8_bin NOT NULL, int hasImage (11) NOT NULL, varchar language (2) agrupar utf8_bin NOT NULL, varchar time_added (255) agrupar utf8_bin NOT NULL, CHAVE PRIMÁRIA (id) ) MOTOR = InnoDB PADRÃO CHARSET = UTF-8 AGRUPAR = utf8_bin AUTO_INCREMENT = 1

Ocorreu um erro em: 2009-09-08 17:41:01 no.:35 linha Código de erro: 1050 - 'anúncios' tabela já existe

Inquérito: CRIAR ads TABLE ( bigint id (20) auto_increment NOT NULL, int city_id (11) NOT NULL, Agrupar texto type utf8_bin NOT NULL, Agrupar texto town utf8_bin NOT NULL, Agrupar texto address utf8_bin NOT NULL, Agrupar texto price utf8_bin NOT NULL, Agrupar texto info utf8_bin NOT NULL, Agrupar texto link utf8_bin NOT NULL, int hasImage (11) NOT NULL, varchar language (2) agrupar utf8_bin NOT NULL, varchar time_added (255) agrupar utf8_bin NOT NULL, CHAVE PRIMÁRIA (id) ) MOTOR = InnoDB PADRÃO CHARSET = UTF-8 AGRUPAR = utf8_bin AUTO_INCREMENT = 1

Ocorreu um erro em: 2009-09-08 17:41:21 no.:35 linha Código de erro: 1050 - 'anúncios' tabela já existe

Inquérito: CRIAR ads TABLE ( bigint id (20) auto_increment NOT NULL, int city_id (11) NOT NULL, Agrupar texto type utf8_bin NOT NULL, Agrupar texto town utf8_bin NOT NULL, Agrupar texto address utf8_bin NOT NULL, Agrupar texto price utf8_bin NOT NULL, Agrupar texto info utf8_bin NOT NULL, Agrupar texto link utf8_bin NOT NULL, int hasImage (11) NOT NULL, varchar language (2) agrupar utf8_bin NOT NULL, varchar time_added (255) agrupar utf8_bin NOT NULL, CHAVE PRIMÁRIA (id) ) MOTOR = InnoDB PADRÃO CHARSET = UTF-8 AGRUPAR = utf8_bin AUTO_INCREMENT = 1

Ocorreu um erro em: 2009-09-08 17:41:35 no.:35 linha Código de erro: 1050 - 'anúncios' tabela já existe

Inquérito: CRIAR ads TABLE ( bigint id (20) auto_increment NOT NULL, int city_id (11) NOT NULL, Agrupar texto type utf8_bin NOT NULL, Agrupar texto town utf8_bin NOT NULL, Agrupar texto address utf8_bin NOT NULL, Agrupar texto price utf8_bin NOT NULL, Agrupar texto info utf8_bin NOT NULL, Agrupar texto link utf8_bin NOT NULL, int hasImage (11) NOT NULL, varchar language (2) agrupar utf8_bin NOT NULL, varchar time_added (255) agrupar utf8_bin NOT NULL, CHAVE PRIMÁRIA (id) ) MOTOR = InnoDB PADRÃO CHARSET = UTF-8 AGRUPAR = utf8_bin AUTO_INCREMENT = 1

Ocorreu um erro em: 2009-09-08 17:42:07 no.:35 linha Código de erro: 1050 - 'anúncios' tabela já existe

Inquérito: 1 Stanford University 6700 http://www.orkut.co.in . . .

Foi útil?

Solução

A extensão do arquivo ".sql" é essencialmente sem sentido: é só lá para que você saber o que é o arquivo. Será apenas um arquivo de texto contendo SQL, que pode ser aberto no bloco de notas. Portanto, não há nenhuma especial "mysql" ou extensões "servidor SQL".

Os erros você está chegando lá "Table 'ads' already exists" são, porque você está tentando criar uma tabela que já existe no banco de dados. (Você leu o erro?) Você tem algumas opções:

  1. Alterar o SQL para isso:

    CREATE TABLE IF NOT EXISTS ads ( id bigint(20) ...
    
  2. Alterar o SQL para isso:

    DROP TABLE IF EXISTS ads;
    CREATE TABLE ads (id bigint(20) ...
    
  3. limpar todas as tabelas no DB primeiros.

Outras dicas

MySQL e Microsoft SQL Server que, infelizmente, implementar diferentes dialetos de SQL. Portanto, a resposta à sua pergunta:

Q1. Então, minha pergunta é se o ficheiro.sql gerado a partir do MySQL e MS-SQL são diferentes?

é "sim, bastante possiby". No entanto, o erro específico que você está mostrando parece ser devido estritamente a uma declaração "Criar tabela" na linha 35 que está sendo executado mais e mais e mais uma vez, e isso não pode depender de tais diferenças de dialeto, por isso as causas tem que ser outros (tais como erros ou diferenças de formato sutis em que esse programa "SQLyog", que eu não estou familiarizado com, espera como sua entrada).

Depende de qual software exportado este arquivo. Além disso, verifique no cabeçalho do arquivo que software fez isso e analisar a sintaxe para determinar onde este arquivo pertence. Note-se também que o SQL é do Microsoft SQL Server.

Sim. SQL varia muito de banco de dados para banco de dados. Enquanto há um SQL padrão que a maioria dos bancos de dados suportam grande parte, cada banco de dados tem numerosos, recursos fora do padrão incompatíveis e funções acima e além da especificada pela norma.

Há também muitos documentos de migração disponíveis:

MSSQL => MySQL: http://dev.mysql.com/tech-resources/ artigos / migrando-de-microsoft.html

MySQL => MSSQL: http://technet.microsoft.com/en-us/library/cc966396. aspx

Há duas coisas óbvias em sua instrução CREATE TABLE que MSSQL não suporta que saltam imediatamente:

ENGINE=InnoDB
AUTO_INCREMENT=1

Essas são as duas afirmações específicas do MySQL.

Parece que o script está sendo executado várias vezes (como o número da linha onde o erro ocorre é o mesmo de cada vez). O erro também indica que você está tentando definir uma tabela que já existe, o que pode ser a partir da primeira vez que este script foi executado. Você pode querer olhar para como o script está sendo executado para ver por que ele pode ser executar várias vezes.

O próprio SQL parece bem para o MySQL. Ele não iria correr com o SQL Server.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top