MySQL Workbench: невозможно экспортировать базу данных

Я столкнулся с проблемой, связанной с экспортом базы данных. Прежде всего, я должен уточнить, что я использую MySQL Workbench 5.2.47. Процедура, которой я следовал до сих пор, заключается в следующем:

  1. Я следовал инструкциям http://mysqlworkbench.org/2012/07/migrating-from-ms-sql-server-to-mysql-using-workbench-migration-wizard/, чтобы создать соединение с моим MSSQL DB чтобы превратить его в MySQL DB,

  2. Затем я также проверил, что мои данные импортированы в базу данных.

  3. Теперь я хочу экспортировать его в файл sql / или предпочтительно в файлы frm, myi, myd, чтобы разместить их на моем сервере.

Я пытался экспортировать их из

  • Администрирование сервера -> Экспорт данных

  • Уже сменил пароль от безопасности (Пользователи и привилегии)

но я сталкиваюсь с проблемой

Dumping test (all tables)
Running: mysqldump.exe --defaults-extra-file="c:\users\d_micha\appdata\local\temp\tmpgtwa_m.cnf"  --user=root --max_allowed_packet=1G --host=localhost --port=3306 --default-character-set=utf8 --single-transaction=TRUE --routines --events --no-data "test"

mysqldump: Got error: 1045: Access denied for user 'root'@'localhost' (using password: NO) when trying to connect

Operation failed with exitcode 2

Я не знаю, что я могу делать неправильно, и я искал в Google, чтобы найти решение, но оно должно быть нормально экспортировано.

Любая другая информация будет предоставлена ​​по запросу.

Спасибо.

6 ответов

Я видел эту проблему, когда у вас нет LOCK TABLES разрешение. Вы увидите эту ошибку до того, как в журнале появятся другие ошибки доступа. Попробуйте отключить LOCK TABLES в дополнительных настройках на панели "Экспорт данных" рабочей среды.

mysqldump: Got error: 1044: Access denied for user 'XXX'@'%' to database 'XXX' when doing LOCK TABLES

Решение 1. Предоставьте правильный файл конфигурации для каждого вызова mysqldump.

Это скорее обходной путь, но он поможет вам достичь желаемого результата. Просто используйте предоставленную информацию, чтобы получить дамп MySQL-таблицы из CLI - в основном это просто копирование и вставка:

Как вы можете видеть из журнала, mysqldump имеет параметр --defaults-file. Этот файл может и будет содержать учетные данные подключения, такие как пароль. Очевидно, MySQLWorkbench не предоставляет пароль для этого файла ("используя пароль: НЕТ").

Поэтому просто создайте файл с именем database.cnf и поместите его где-нибудь на свой компьютер (например, c: \ temp \ database.cnf), содержащий такие учетные данные, как это:

[client]
user=root
password=your-root-password
single-transaction=TRUE
host=localhost
port=3306
default-character-set=utf8
max_allowed_packet=1G

Поскольку это также работает с любым другим параметром из командной строки, вы также можете добавить все ваши другие вещи, такие как --single -action и т. Д. Теперь возьмем запись в вашем файле журнала:

Running: mysqldump.exe --defaults-extra-file="c:\users\d_micha\appdata\local\temp\tmpgtwa_m.cnf"  --user=root --max_allowed_packet=1G --host=localhost --port=3306 --default-character-set=utf8 --single-transaction=TRUE --routines --events --no-data "test"

И замените параметр --defaults-extra-file, чтобы он указывал на ваш файл database.cnf, а также удалите информацию "Running:" и все параметры, которые вы уже указали в вашем database.cnf:

mysqldump.exe --defaults-extra-file="c:\temp\database.cnf" --routines --events --no-data "test"

Затем откройте оболочку, перейдите в папку MySQLWorkbench и запустите команду, например:

cd c:\Program Files\MySQL\MySQL Workbench 6.3 CE\
mmysqldump.exe --defaults-extra-file="c:\temp\database.cnf" --routines --events --no-data "test" > c:\Users\user\Downloads\table1.sql

Не забудьте направить вывод в файл!

Короче говоря: используйте инструмент CLI mysqldump, MySQLWorkbench делает то же самое, но не правильно.

Решение 2. Предоставьте глобальный правильный файл конфигурации

mysqldump также читает глобальный конфигурационный файл, если он существует в одном из этих мест:

  • C: \ WINDOWS \ my.ini
  • C: \ WINDOWS \ my.cnf
  • C: \ my.ini
  • C: \ my.cnf
  • c: \ Program Files \ MySQL \ my.ini
  • c: \ Program Files \ MySQL \ my.cnf

Таким образом, вы можете просто поместить информацию из отредактированного выше cnf-файла в одно из этих мест и запустить команду mysqldump без параметра --defaults-file-parameter

Решение 3 Просто вызовите mysqldump без параметров

Это, пожалуй, самое сложное решение: my.cnf будет работать с любым параметром, который принимает mysqldump. Так почему бы просто не использовать это для настройки своего дампа? Просто добавьте все параметры в ваш my.cnf

[client]
user=root
password=secretPassword
single-transaction=TRUE
host=localhost
protocol=tcp
port=3306
default-character-set=utf8
skip-triggers=TRUE
all-databases=TRUE
all-tablespaces=TRUE

Теперь запустите mysqldump в командной строке / командной строке, без каких-либо параметров, и это хорошо:

cd c:\Program Files\MySQL\MySQL Workbench 6.3 CE\
mysqldump.exe  > c:\Users\user\Downloads\dump.sql

Ошибка операции с кодом выхода 2

также возникает с проблемами статистики столбца, которые я исправил, изменив файл конфигурации MySQL Workbench wb_admin_export.py.

Смотрите мой ответ здесь.

Пожалуйста, попробуйте это решение https://bugs.mysql.com/bug.php?id=91640.

На самом деле мы можем использовать расширенный параметр в Workbench, чтобы отключить статистику по столбцам согласно /questions/14148713/ne-mogu-eksportirovat-moyu-bazu-dannyih-iz-mysql-workbench/14148717#14148717 - см. Ниже:

  1. Перейти в Управление / Экспорт данных
  2. Выберите схему для экспорта в списке "Таблицы для экспорта"
  3. Нажмите кнопку "Дополнительные параметры..." (вверху справа)
  4. Найдите опцию "Другое / столбец-статистика"
  5. Установите значение 0
  6. Нажмите кнопку "Вернуться" (вверху справа)

По словам автора этого поста: "К сожалению, вам придется делать это каждый раз, когда вы запускаете MySQL Workbench".

Это работа для меня, может быть, это может помочь другим.

Это сработало для меня после того, как я попробовал большинство приведенных выше вариантов в MysqlWokbench 8.0.32 и перечислил поток на основе ответов на вопрос о переполнении стека.

  1. Найдите «C:\Program Files\MySQL\MySQL Workbench 8.0 CE\modules».

  2. Создайте резервную копию файла «wb_admin_export.py» (в любом случае замените обратно).

  3. Закройте MysqlWorkbench, если он открыт.

  4. Откройте блокнот с правами администратора и откройте файл «wb_admin_export.py».

  5. Найдите следующую строку.

    Skip_column_statistics = True, если get_mysqldump_version() > Version(8, 0, 2) и self.owner.ctrl_be.target_version < Version(8, 0, 0) иначе False

  6. Оставьте только ' skip_column_statistics = True ' и удалите правую часть приведенной выше строки. (Не сохраняйте табуляции или комментарии к строкам, поскольку блоки кода Python распознаются по табуляциям и просто удаляют нужную часть кода).

  1. Сохраните файл, запустите рабочую среду MySQL и повторите попытку экспорта.

MySQL Workbench пытается получить доступ к вашей базе данных без пароля (обратите внимание на using password: NO в ошибке). Удивительно, но вам удалось получить доступ к экземпляру сервера. Создайте заново экземпляр сервера или, по крайней мере, попробуйте использовать только что созданный экземпляр.

Другие вопросы по тегам