Отличается ли файл .sql для MySQL и SQL? - PullRequest
0 голосов
/ 10 февраля 2010

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

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

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

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

Вот ОШИБКА:

Запрос: 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, ПЕРВИЧНЫЙ КЛЮЧ (id) ) ENGINE = InnoDB CHARSET ПО УМОЛЧАНИЮ = utf8 COLLATE = utf8_bin AUTO_INCREMENT = 1

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

Запрос: 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, ПЕРВИЧНЫЙ КЛЮЧ (id) ) ENGINE = InnoDB CHARSET ПО УМОЛЧАНИЮ = utf8 COLLATE = utf8_bin AUTO_INCREMENT = 1

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

Запрос: 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, ПЕРВИЧНЫЙ КЛЮЧ (id) ) ENGINE = InnoDB CHARSET ПО УМОЛЧАНИЮ = utf8 COLLATE = utf8_bin AUTO_INCREMENT = 1

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

Запрос: 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, ПЕРВИЧНЫЙ КЛЮЧ (id) ) ENGINE = InnoDB CHARSET ПО УМОЛЧАНИЮ = utf8 COLLATE = utf8_bin AUTO_INCREMENT = 1

Произошла ошибка в: 2009-09-08 17:42:07 Строка № 35 Код ошибки: 1050 - Таблица объявлений уже существует

Запрос: 1 Стэнфордский университет 6700 http://www.orkut.co.in , , .

Ответы [ 5 ]

3 голосов
/ 10 февраля 2010

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

2 голосов
/ 10 февраля 2010

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

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

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

1 голос
/ 10 февраля 2010

Да. 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 операторы.

1 голос
/ 10 февраля 2010

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

0 голосов
/ 10 февраля 2010

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

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

...