É diferente ficheiro.sql para MySQL e SQL?
-
19-09-2019 - |
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 ( bigintid
(20) auto_increment NOT NULL, intcity_id
(11) NOT NULL, Agrupar textotype
utf8_bin NOT NULL, Agrupar textotown
utf8_bin NOT NULL, Agrupar textoaddress
utf8_bin NOT NULL, Agrupar textoprice
utf8_bin NOT NULL, Agrupar textoinfo
utf8_bin NOT NULL, Agrupar textolink
utf8_bin NOT NULL, inthasImage
(11) NOT NULL, varcharlanguage
(2) agrupar utf8_bin NOT NULL, varchartime_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 ( bigintid
(20) auto_increment NOT NULL, intcity_id
(11) NOT NULL, Agrupar textotype
utf8_bin NOT NULL, Agrupar textotown
utf8_bin NOT NULL, Agrupar textoaddress
utf8_bin NOT NULL, Agrupar textoprice
utf8_bin NOT NULL, Agrupar textoinfo
utf8_bin NOT NULL, Agrupar textolink
utf8_bin NOT NULL, inthasImage
(11) NOT NULL, varcharlanguage
(2) agrupar utf8_bin NOT NULL, varchartime_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 ( bigintid
(20) auto_increment NOT NULL, intcity_id
(11) NOT NULL, Agrupar textotype
utf8_bin NOT NULL, Agrupar textotown
utf8_bin NOT NULL, Agrupar textoaddress
utf8_bin NOT NULL, Agrupar textoprice
utf8_bin NOT NULL, Agrupar textoinfo
utf8_bin NOT NULL, Agrupar textolink
utf8_bin NOT NULL, inthasImage
(11) NOT NULL, varcharlanguage
(2) agrupar utf8_bin NOT NULL, varchartime_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 ( bigintid
(20) auto_increment NOT NULL, intcity_id
(11) NOT NULL, Agrupar textotype
utf8_bin NOT NULL, Agrupar textotown
utf8_bin NOT NULL, Agrupar textoaddress
utf8_bin NOT NULL, Agrupar textoprice
utf8_bin NOT NULL, Agrupar textoinfo
utf8_bin NOT NULL, Agrupar textolink
utf8_bin NOT NULL, inthasImage
(11) NOT NULL, varcharlanguage
(2) agrupar utf8_bin NOT NULL, varchartime_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 . . .
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:
-
Alterar o SQL para isso:
CREATE TABLE IF NOT EXISTS ads ( id bigint(20) ...
-
Alterar o SQL para isso:
DROP TABLE IF EXISTS ads; CREATE TABLE ads (id bigint(20) ...
-
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.