È file sql diverso per MySQL e SQL?
-
19-09-2019 - |
Domanda
Ho un file sql e voglio caricarlo nel database MySQL. Non so da quale database (MySQL o MS-SQL) è stato creato.
Ora, sto cercando di importare il file in database MySQL. Si sta mostrando errori durante l'importazione e l'esecuzione di quel file.
Q1. Quindi, la mia domanda è se il file sql generato da MySQL e MS-SQL sono diversi?
Nota:. Sto usando il software SQLyog (interfaccia grafica per MySQL) per l'importazione del file
Qui è l'errore:
Query: CREATE TABLE
ads
(id
bigint (20) auto_increment NOT NULL,city_id
int (11) NOT NULL, testotype
fascicolazione utf8_bin NOT NULL, testotown
fascicolazione utf8_bin NOT NULL, testoaddress
fascicolazione utf8_bin NOT NULL, testoprice
fascicolazione utf8_bin NOT NULL, testoinfo
fascicolazione utf8_bin NOT NULL, testolink
fascicolazione utf8_bin NOT NULL,hasImage
int (11) NOT NULL,language
varchar (2) raccolgono utf8_bin NOT NULL,time_added
varchar (255) fascicolazione utf8_bin NOT NULL, PRIMARY KEY (id
) ) ENGINE = InnoDB DI DEFAULT CHARSET = utf8 COLLATE = utf8_bin AUTO_INCREMENT = 1
è verificato un errore a: 2009-09-08 17:41:01 no.:35 linea Codice di errore: 1050 - Tavola 'annunci' esiste già
Query: CREATE TABLE
ads
(id
bigint (20) auto_increment NOT NULL,city_id
int (11) NOT NULL, testotype
fascicolazione utf8_bin NOT NULL, testotown
fascicolazione utf8_bin NOT NULL, testoaddress
fascicolazione utf8_bin NOT NULL, testoprice
fascicolazione utf8_bin NOT NULL, testoinfo
fascicolazione utf8_bin NOT NULL, testolink
fascicolazione utf8_bin NOT NULL,hasImage
int (11) NOT NULL,language
varchar (2) raccolgono utf8_bin NOT NULL,time_added
varchar (255) fascicolazione utf8_bin NOT NULL, PRIMARY KEY (id
) ) ENGINE = InnoDB DI DEFAULT CHARSET = utf8 COLLATE = utf8_bin AUTO_INCREMENT = 1
è verificato un errore a: 2009-09-08 17:41:21 no.:35 linea Codice di errore: 1050 - Tavola 'annunci' esiste già
Query: CREATE TABLE
ads
(id
bigint (20) auto_increment NOT NULL,city_id
int (11) NOT NULL, testotype
fascicolazione utf8_bin NOT NULL, testotown
fascicolazione utf8_bin NOT NULL, testoaddress
fascicolazione utf8_bin NOT NULL, testoprice
fascicolazione utf8_bin NOT NULL, testoinfo
fascicolazione utf8_bin NOT NULL, testolink
fascicolazione utf8_bin NOT NULL,hasImage
int (11) NOT NULL,language
varchar (2) raccolgono utf8_bin NOT NULL,time_added
varchar (255) fascicolazione utf8_bin NOT NULL, PRIMARY KEY (id
) ) ENGINE = InnoDB DI DEFAULT CHARSET = utf8 COLLATE = utf8_bin AUTO_INCREMENT = 1
è verificato un errore a: 2009-09-08 17:41:35 no.:35 linea Codice di errore: 1050 - Tavola 'annunci' esiste già
Query: CREATE TABLE
ads
(id
bigint (20) auto_increment NOT NULL,city_id
int (11) NOT NULL, testotype
fascicolazione utf8_bin NOT NULL, testotown
fascicolazione utf8_bin NOT NULL, testoaddress
fascicolazione utf8_bin NOT NULL, testoprice
fascicolazione utf8_bin NOT NULL, testoinfo
fascicolazione utf8_bin NOT NULL, testolink
fascicolazione utf8_bin NOT NULL,hasImage
int (11) NOT NULL,language
varchar (2) raccolgono utf8_bin NOT NULL,time_added
varchar (255) fascicolazione utf8_bin NOT NULL, PRIMARY KEY (id
) ) ENGINE = InnoDB DI DEFAULT CHARSET = utf8 COLLATE = utf8_bin AUTO_INCREMENT = 1
è verificato un errore a: 2009-09-08 17:42:07 no.:35 linea Codice di errore: 1050 - Tavola 'annunci' esiste già
Query: 1 Stanford University 6700 http://www.orkut.co.in . . .
Soluzione
L'estensione del file ".sql" è essenzialmente privo di significato: è proprio lì in modo che si sapere che cosa il file è. Sarà solo una pianura SQL file di testo contenente, che è possibile aprire in Blocco note. Pertanto, non ci sono particolari "mysql" o estensioni "server SQL".
Gli errori che stai ricevendo ci sono "Table 'ads' already exists"
perché si sta cercando di creare una tabella che già esiste nel database. (Hai letto l'errore?) Hai alcune opzioni:
-
Modificare il codice SQL a questo:
CREATE TABLE IF NOT EXISTS ads ( id bigint(20) ...
-
Modificare il codice SQL a questo:
DROP TABLE IF EXISTS ads; CREATE TABLE ads (id bigint(20) ...
-
Cancella tutte le tabelle del DB prima.
Altri suggerimenti
MySQL e Microsoft SQL Server fanno, purtroppo, implementare diversi dialetti di SQL. Quindi, la risposta alla tua domanda:
Q1. Quindi, la mia domanda è se il generato dal file sql MySQL e MS-SQL sono diversi?
è "sì, abbastanza possiby". Tuttavia, l'errore specifico si sta mostrando sembra essere dovuto rigorosamente ad una "Crea tabella" dichiarazione sulla linea 35 in esecuzione più e più e più volte, e che non può dipendere da tali differenze dialettali, così le cause devono essere altri quelli (come gli insetti o le differenze di formato sottili cosa quel programma "SQLyog", che io non sono a conoscenza, si aspetta come input).
Dipende da quale software esportato il file. Controllare anche nell'intestazione del file che il software ha fatto e analizzare la sintassi per determinare dove il file appartiene. Si noti inoltre che SQL è Microsoft SQL server.
Sì. SQL varia notevolmente da database a database. Mentre v'è una standard SQL, che la maggior parte dei database supportano gran parte, ogni database ha numerosi, incompatibili caratteristiche non standard e funzioni che vanno oltre quello specificato dallo standard.
Ci sono anche molti documenti di migrazione avaiable:
MSSQL => MySQL: http://dev.mysql.com/tech-resources/ articoli / migrazione-da-microsoft.html
MySQL => MSSQL: http://technet.microsoft.com/en-us/library/cc966396. aspx
Ci sono due cose ovvie nell'istruzione CREATE TABLE che MSSQL non supporta che salta fuori subito:
ENGINE=InnoDB
AUTO_INCREMENT=1
Queste sono entrambe le istruzioni MySQL-specifici.
Sembra che lo script viene eseguito più volte (come il numero di riga in cui l'errore si verifica è la stessa ogni volta). L'errore indica anche che si sta cercando di definire una tabella già esistente, che può essere sin dalla prima volta questo script ha funzionato. Si consiglia di guardare in che modo lo script viene eseguito per vedere il motivo per cui potrebbe essere in esecuzione più volte.
Lo SQL stesso sembra bene per MySQL. Non sarebbe correre con SQL Server.