首页 文章

.sql文件与MySQL和SQL有什么不同?

提问于
浏览
0

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

现在,我试图将该文件导入MySQL数据库 . 导入和执行该文件时显示错误 .

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

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

Here is the ERROR:

查询:CREATE TABLE广告(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,链接文本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行号:35错误代码:1050 - 表'广告'已经存在

查询:CREATE TABLE广告(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,链接文本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行号:35错误代码:1050 - 表'广告'已经存在

查询:CREATE TABLE广告(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,链接文本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行号:35错误代码:1050 - 表'广告'已经存在

查询:CREATE TABLE广告(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,链接文本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行号:35错误代码:1050 - 表'广告'已经存在

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

5 回答

  • 2

    看起来您的脚本正在执行多次(因为每次发生错误的行号都相同) . 该错误还表示您正在尝试定义已存在的表,这可能是从第一次运行此脚本开始的 . 您可能希望查看脚本的运行方式,以了解脚本可能多次执行的原因 .

    SQL本身看起来很适合MySQL . 它不会与SQL Server一起运行 .

  • 0

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

    您在那里遇到的错误是因为您正在尝试创建一个已存在于数据库中的表 . (你读过这个错误吗?)你有几个选择:

    • 将SQL更改为:
    CREATE TABLE IF NOT EXISTS ads ( id bigint(20) ...
    
    • 将SQL更改为:
    DROP TABLE IF EXISTS ads;
    CREATE TABLE ads (id bigint(20) ...
    
    • 首先清除数据库中的所有表 .
  • 1

    遗憾的是,MySQL和Microsoft SQL Server实现了不同的SQL方言 . 那么,你的问题的答案:

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

    是“是的,非常可能” . 但是,您显示的具体错误似乎是由于第35行上的“创建表”语句一遍又一遍地执行,并且不能依赖于此类方言差异,因此原因必须是其他的(例如我不熟悉的“SQLYog”程序中的错误或细微格式差异,期望作为其输入) .

  • 1

    这取决于导出此文件的软件 . 还要检查文件的 Headers ,找到哪个软件并分析语法以确定该文件的所在位置 . 另请注意,SQL是microsoft sql server .

  • 3

    是 . 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的语句 .

相关问题