0

我有一个 .sql 文件,我想将它加载到 MySQL 数据库中。我不知道它是从哪个数据库(MySQL 或 MS-SQL)创建的。

现在,我正在尝试将该文件导入 MySQL 数据库。它在导入和执行该文件时显示错误。

Q1。所以,我的问题是从 MySQL 和 MS-SQL 生成的 .sql 文件是否不同?

注意:我正在使用 SQLYog 软件(MySQL 的图形界面)来导入文件。

这是错误:

查询: CREATE TABLE ads( idbigint(20) NOT NULL auto_increment, city_idint(11) NOT NULL, typetext collat​​e utf8_bin NOT NULL, towntext collat​​e utf8_bin NOT NULL, addresstext collat​​e utf8_bin NOT NULL, pricetext collat​​e utf8_bin NOT NULL, infotext collat​​e utf8_bin NOT NULL, linktext collat​​e utf8_bin NOT NULL, hasImageint(11) NOT NULL, languagevarchar(2) collat​​e utf8_bin NOT NULL, time_addedvarchar(255) collat​​e utf8_bin NOT NULL, PRIMARY KEY ( id) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1

错误发生在:2009-09-08 17:41:01 行号:35 错误代码:1050 - 表“广告”已存在

查询: CREATE TABLE ads( idbigint(20) NOT NULL auto_increment, city_idint(11) NOT NULL, typetext collat​​e utf8_bin NOT NULL, towntext collat​​e utf8_bin NOT NULL, addresstext collat​​e utf8_bin NOT NULL, pricetext collat​​e utf8_bin NOT NULL, infotext collat​​e utf8_bin NOT NULL, linktext collat​​e utf8_bin NOT NULL, hasImageint(11) NOT NULL, languagevarchar(2) collat​​e utf8_bin NOT NULL, time_addedvarchar(255) collat​​e utf8_bin NOT NULL, PRIMARY KEY ( id) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1

错误发生在:2009-09-08 17:41:21 行号:35 错误代码:1050 - 表“广告”已存在

查询: CREATE TABLE ads( idbigint(20) NOT NULL auto_increment, city_idint(11) NOT NULL, typetext collat​​e utf8_bin NOT NULL, towntext collat​​e utf8_bin NOT NULL, addresstext collat​​e utf8_bin NOT NULL, pricetext collat​​e utf8_bin NOT NULL, infotext collat​​e utf8_bin NOT NULL, linktext collat​​e utf8_bin NOT NULL, hasImageint(11) NOT NULL, languagevarchar(2) collat​​e utf8_bin NOT NULL, time_addedvarchar(255) collat​​e utf8_bin NOT NULL, PRIMARY KEY ( id) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1

错误发生在:2009-09-08 17:41:35 行号:35 错误代码:1050 - 表“广告”已存在

查询: CREATE TABLE ads( idbigint(20) NOT NULL auto_increment, city_idint(11) NOT NULL, typetext collat​​e utf8_bin NOT NULL, towntext collat​​e utf8_bin NOT NULL, addresstext collat​​e utf8_bin NOT NULL, pricetext collat​​e utf8_bin NOT NULL, infotext collat​​e utf8_bin NOT NULL, linktext collat​​e utf8_bin NOT NULL, hasImageint(11) NOT NULL, languagevarchar(2) collat​​e utf8_bin NOT NULL, time_addedvarchar(255) collat​​e utf8_bin NOT NULL, PRIMARY KEY ( id) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1

错误发生在:2009-09-08 17:42:07 行号:35 错误代码:1050 - 表“广告”已存在

查询:1 斯坦福大学 6700 http://www.orkut.co.in 。. .

4

5 回答 5

3

文件扩展名“.sql”本质上是没有意义的:它只是在那里,以便知道文件是什么。它只是一个包含 SQL 的纯文本文件,您可以在记事本中打开它。因此,没有特殊的“mysql”或“sql server”扩展。

您遇到的错误"Table 'ads' already exists"是因为您正在尝试创建一个已经存在于数据库中的表。(你读过错误吗?)你有几个选择:

  1. 将 SQL 更改为:

    CREATE TABLE IF NOT EXISTS ads ( id bigint(20) ...
    
  2. 将 SQL 更改为:

    DROP TABLE IF EXISTS ads;
    CREATE TABLE ads (id bigint(20) ...
    
  3. 首先清除数据库中的所有表。

于 2010-02-10T06:22:27.127 回答
2

不幸的是,MySQL 和 Microsoft SQL Server 确实实现了不同的 SQL 方言。所以,你的问题的答案:

Q1。所以,我的问题是从 MySQL 和 MS-SQL 生成的 .sql 文件是否不同?

是“是的,很可能”。但是,您显示的具体错误似乎完全是由于第 35 行的“创建表”语句一遍又一遍地执行,并且不能取决于这种方言差异,所以原因必须是其他的(例如我不熟悉的“SQLYog”程序期望作为其输入的错误或细微的格式差异)。

于 2010-02-10T06:24:52.677 回答
1

这取决于哪个软件导出了这个文件。还要检查文件的标题是哪个软件做的,并分析语法以确定该文件所属的位置。另请注意,SQL 是 microsoft sql server。

于 2010-02-10T06:20:14.253 回答
1

是的。SQL 因数据库而异。虽然有一个大多数数据库都支持的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 特定的语句。

于 2010-02-10T06:28:46.770 回答
0

看起来您的脚本正在执行多次(因为每次发生错误的行号都是相同的)。该错误还表明您正在尝试定义一个已经存在的表,该表可能是从该脚本第一次运行开始的。您可能想查看脚本是如何运行的,以了解为什么它可能会执行多次。

SQL 本身对于 MySQL 来说看起来不错。它不能与 SQL Server 一起运行。

于 2010-02-10T06:35:42.897 回答