Вопрос

У меня есть файл .sql, и я хочу загрузить его в базу данных MySQL.Я не знаю, из какой базы данных (MySQL или MS-SQL) он был создан.

Теперь я пытаюсь импортировать этот файл в базу данных MySQL.Он показывает ошибки при импорте и выполнении этого файла.

Вопрос 1.Итак, мой вопрос: отличаются ли файлы .sql, созданные из MySQL и MS-SQL?

Примечание:Я использую программное обеспечение SQLYog (графический интерфейс для MySQL) для импорта файла.

Вот ОШИБКА:

Запрос:СОЗДАТЬ ТАБЛИЦУ ads ( id bigint(20) NOT NULL auto_increment, city_id int(11) НЕ НУЛЬ, type сортировка текста utf8_bin НЕ NULL, town сортировка текста utf8_bin НЕ NULL, address сортировка текста utf8_bin НЕ NULL, price сортировка текста utf8_bin НЕ NULL, info сортировка текста utf8_bin НЕ NULL, link сортировка текста utf8_bin НЕ NULL, hasImage int(11) НЕ НУЛЬ, language varchar(2) сортировать utf8_bin NOT NULL, time_added varchar (255) Collate utf8_bin не нулевой, первичный ключ (id)) Engine = innodb default charset = utf8 collate = utf8_bin auto_increment = 1

Ошибка произошла по адресу: 2009-09-08 17:41:01 Строка №: 35 Код ошибки:1050 – таблица "объявления" уже существует.

Запрос:СОЗДАТЬ ТАБЛИЦУ ads ( id bigint(20) NOT NULL auto_increment, city_id int(11) НЕ НУЛЬ, type сортировка текста utf8_bin НЕ NULL, town сортировка текста utf8_bin НЕ NULL, address сортировка текста utf8_bin НЕ NULL, price сортировка текста utf8_bin НЕ NULL, info сортировка текста utf8_bin НЕ NULL, link сортировка текста utf8_bin НЕ NULL, hasImage int(11) НЕ НУЛЬ, language varchar(2) сортировать utf8_bin NOT NULL, time_added varchar (255) Collate utf8_bin не нулевой, первичный ключ (id)) Engine = innodb default charset = utf8 collate = utf8_bin auto_increment = 1

Ошибка произошла по адресу: 2009-09-08 17:41:21 Строка №: 35 Код ошибки:1050 – таблица "объявления" уже существует.

Запрос:СОЗДАТЬ ТАБЛИЦУ ads ( id bigint(20) NOT NULL auto_increment, city_id int(11) НЕ НУЛЬ, type сортировка текста utf8_bin НЕ NULL, town сортировка текста utf8_bin НЕ NULL, address сортировка текста utf8_bin НЕ NULL, price сортировка текста utf8_bin НЕ NULL, info сортировка текста utf8_bin НЕ NULL, link сортировка текста utf8_bin НЕ NULL, hasImage int(11) НЕ НУЛЬ, language varchar(2) сортировать utf8_bin NOT NULL, time_added varchar (255) Collate utf8_bin не нулевой, первичный ключ (id)) Engine = innodb default charset = utf8 collate = utf8_bin auto_increment = 1

Ошибка произошла по адресу: 2009-09-08 17:41:35 Строка №: 35 Код ошибки:1050 – таблица "объявления" уже существует.

Запрос:СОЗДАТЬ ТАБЛИЦУ ads ( id bigint(20) NOT NULL auto_increment, city_id int(11) НЕ НУЛЬ, type сортировка текста utf8_bin НЕ NULL, town сортировка текста utf8_bin НЕ NULL, address сортировка текста utf8_bin НЕ NULL, price сортировка текста utf8_bin НЕ NULL, info сортировка текста utf8_bin НЕ NULL, link сортировка текста utf8_bin НЕ NULL, hasImage int(11) НЕ НУЛЬ, language varchar(2) сортировать utf8_bin NOT NULL, time_added varchar (255) Collate utf8_bin не нулевой, первичный ключ (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 . . .

Это было полезно?

Решение

Расширение файла «.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. Сначала очистите все таблицы в БД.

Другие советы

К сожалению, MySQL и Microsoft SQL Server реализуют разные диалекты SQL.Итак, ответ на ваш вопрос:

Вопрос 1.Итак, мой вопрос заключается в том, отличается ли файл .SQL, сгенерированный из MySQL и MS-SQL?

«да, вполне возможно».Однако конкретная ошибка, которую вы показываете, по-видимому, связана исключительно с тем, что оператор «Создать таблицу» в строке 35 выполняется снова и снова и снова, и это не может зависеть от таких различий в диалектах, поэтому причины должны быть другие (например, ошибки или тонкие различия в формате того, что программа «SQLYog», с которой я не знаком, ожидает в качестве входных данных).

Это зависит от того, какое программное обеспечение экспортировало этот файл.Также проверьте заголовок файла, какое программное обеспечение это сделало, и проанализируйте синтаксис, чтобы определить, кому принадлежит этот файл.Также обратите внимание, что SQL — это сервер Microsoft sql.

Да.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.

Похоже, ваш скрипт выполняется несколько раз (поскольку номер строки, в которой возникает ошибка, каждый раз один и тот же).Ошибка также указывает на то, что вы пытаетесь определить уже существующую таблицу, которая может быть создана при первом запуске этого сценария.Возможно, вы захотите посмотреть, как запускается сценарий, чтобы понять, почему он может выполняться несколько раз.

Сам SQL выглядит нормально для MySQL.Он не будет работать с SQL Server.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top