对于MySQL和SQL,.sql文件是否有所不同?
我有一个.sql文件,我想把它加载到MySQL数据库中。我不知道它是从哪个数据库(MySQL或MS-SQL)创建的。对于MySQL和SQL,.sql文件是否有所不同?
现在,我试图将该文件导入MySQL数据库。它在导入和执行该文件时显示错误。
Q1. So, my question is whether the .sql file generated from MySQL and MS-SQL are different?
注意:我使用SQLYog软件(用于MySQL的图形界面)导入文件。
以下是错误:
Query: CREATE TABLE
ads
(id
bigint(20) NOT NULL auto_increment,city_id
int(11) NOT NULL,type
text collate utf8_bin NOT NULL,town
text collate utf8_bin NOT NULL,address
text collate utf8_bin NOT NULL,price
text collate utf8_bin NOT NULL,info
text collate utf8_bin NOT NULL,link
text collate utf8_bin NOT NULL,hasImage
int(11) NOT NULL,language
varchar(2) collate utf8_bin NOT NULL,time_added
varchar(255) collate utf8_bin NOT NULL, PRIMARY KEY (id
) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1
错误发生在:2009-09-08 17点41分01秒 线no.:35 错误代码:1050 - 表 '广告' 已存在
Query: CREATE TABLE
ads
(id
bigint(20) NOT NULL auto_increment,city_id
int(11) NOT NULL,type
text collate utf8_bin NOT NULL,town
text collate utf8_bin NOT NULL,address
text collate utf8_bin NOT NULL,price
text collate utf8_bin NOT NULL,info
text collate utf8_bin NOT NULL,link
text collate utf8_bin NOT NULL,hasImage
int(11) NOT NULL,language
varchar(2) collate utf8_bin NOT NULL,time_added
varchar(255) collate utf8_bin NOT NULL, PRIMARY KEY (id
) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1
错误发生在:2009-09-08 17时41分21秒 no.:35 错误代码行:1050 - 表 '广告' 已存在
Query: CREATE TABLE
ads
(id
bigint(20) NOT NULL auto_increment,city_id
int(11) NOT NULL,type
text collate utf8_bin NOT NULL,town
text collate utf8_bin NOT NULL,address
text collate utf8_bin NOT NULL,price
text collate utf8_bin NOT NULL,info
text collate utf8_bin NOT NULL,link
text collate utf8_bin NOT NULL,hasImage
int(11) NOT NULL,language
varchar(2) collate utf8_bin NOT NULL,time_added
varchar(255) collate utf8_bin NOT NULL, PRIMARY KEY (id
) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1
错误发生在:2009-09-08 17时41分35秒 no.:35 错误代码行:1050 - 表 '广告' 已存在
Query: CREATE TABLE
ads
(id
bigint(20) NOT NULL auto_increment,city_id
int(11) NOT NULL,type
text collate utf8_bin NOT NULL,town
text collate utf8_bin NOT NULL,address
text collate utf8_bin NOT NULL,price
text collate utf8_bin NOT NULL,info
text collate utf8_bin NOT NULL,link
text collate utf8_bin NOT NULL,hasImage
int(11) NOT NULL,language
varchar(2) collate utf8_bin NOT NULL,time_added
varchar(255) collate utf8_bin NOT NULL, PRIMARY KEY (id
) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1
错误发生在:2009 -09-08 17时42分07秒 线no.:35 错误代码:1050 - 表“广告”已存在
Query: 1 Stanford University 6700 http://www.orkut.co.in . . .
文件扩展名“.sql”实质上是无意义的,它只是存在,因此你知道这个文件是什么。它只是一个纯文本文件,包含SQL,您可以在记事本中打开它。因此,没有特殊的“mysql”或“sql server”扩展。
您遇到的错误"Table 'ads' already exists"
是因为您试图创建一个已经存在于数据库中的表。 (你看过这个错误吗?)你有几种选择:
-
更改SQL这样:
CREATE TABLE IF NOT EXISTS ads (id bigint(20) ...
-
更改SQL这样:
DROP TABLE IF EXISTS ads; CREATE TABLE ads (id bigint(20) ...
清除首先在数据库中列出所有表格。
是的,我读过错误,但没有名称为'ads'的表.. – 2010-02-10 06:24:31
我仍然删除了整个数据库,并尝试重新载入它,但同样的错误发生 – 2010-02-10 06:25:07
@Yatendra - 有再看一次。确保选择了正确的数据库。此外,请检查您的SQL脚本中没有多次创建该表。 – nickf 2010-02-10 06:51:40
这要看软件导出此文件。还要检查文件的标题是哪个软件执行的,并分析语法以确定此文件属于哪个文件。还要注意,SQL是microsoft sql server。
@Sarfraz我检查了标题。头文件如下:......-- phpMyAdmin SQL Dump - 版本3.2.4 - http://www.phpmyadmin.net - - 主机:loc – 2010-02-10 06:22:59
@Goel:Then你应该更好地使用phpmyadmin导入这个文件,它肯定会工作没有错误。谢谢 – Sarfraz 2010-02-10 06:50:11
MySQL和Microsoft SQL Server不幸地实现了不同的SQL方言。所以,你的问题的答案:
Q1. So, my question is whether the .sql file generated from MySQL and MS-SQL are different?
是“是的,很有可能”。然而,你显示的具体错误似乎是由于35行上的“Create table”语句被一次又一次地执行,并且不能依赖于这种方言差异,所以原因必须是其他的(如我所不熟悉的“SQLYog”程序所期望的输入中的错误或细微的格式差异)。
是的。 SQL从数据库到数据库的差异很大。尽管大多数数据库都支持大部分数据库,但每个数据库都有许多不兼容的非标准功能和功能,超出了标准规定的范围。
也有许多迁移文档缴费:
MSSQL => MySQL的: http://dev.mysql.com/tech-resources/articles/migrating-from-microsoft.html
的MySQL => MSSQL: http://technet.microsoft.com/en-us/library/cc966396.aspx
有两个明显的事情在你的CREATE TABLE语句MSSQL不支持立即跳出:
ENGINE=InnoDB
AUTO_INCREMENT=1
这些都是特定于MySQL的语句。
它看起来像你的脚本多次执行(因为错误发生的行号每次都是相同的)。该错误还表明您正在尝试定义一个已存在的表,这可能是第一次运行此脚本。您可能需要查看脚本如何运行以查看可能会多次执行的原因。
SQL本身对于MySQL来说看起来很好。它不会与SQL Server一起运行。
为什么不在你的问题中包含错误信息? – bernie 2010-02-10 06:12:56
“MySQL和SQL”:如“Microsoft SQL Server”中的“SQL”? – Thilo 2010-02-10 06:13:19
@Thilo @Adam我编辑了这个问题。 – 2010-02-10 06:18:52