web-dev-qa-db-ja.com

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で検索して解決策を見つけましたが、通常はエクスポートする必要があります。

その他の情報は、リクエストに応じて提供されます。

ありがとうございました。

8
Dimitra Micha

LOCK TABLES権限がない場合に、この問題が発生しました。このエラーは、残りのアクセス拒否エラーがログに記録される前に表示されます。ワークベンチのデータエクスポートパネルの詳細設定でLOCK TABLESを無効にしてみてください。

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

解決策1-各mysqldump-callに正しい設定ファイルを提供します

これはより回避策ですが、目的の結果が得られます。提供された情報を使用して、CLIからMySQLテーブルのダンプを取得します。基本的には、コピーして貼り付けるだけです。

ログからわかるようにmysqldumpにはパラメータ-defaults-fileがあります。このファイルには、passwordのような接続資格情報を含めることができます。どうやら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-transactionなどの他のすべてのものを追加することもできます。次にログファイルエントリを取得します。

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-Folderに移動して、次のコマンドを実行します。

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ファイルの情報をこの場所の1つに配置し、-defaults-file-パラメータなしでmysqldump-commandを実行できます。

解決策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
1
n.r.

このソリューションを試してください https://bugs.mysql.com/bug.php?id=9164

実際には、Workbenchの詳細オプションを使用して、 https://stackoverflow.com/a/52944315/1694902 -以下を参照して列統計を無効にすることができます。

  1. 管理/データエクスポートに移動
  2. 「エクスポートするテーブル」リストでエクスポートするスキーマを選択します
  3. [詳細オプション...]ボタン(右上)をクリックします
  4. オプション「その他/列統計」を検索します
  5. 値を0に設定します
  6. [戻る]ボタン(右上)をクリックします

この投稿の著者によると、「残念ながら、MySQLWorkbenchを起動するたびにそれを行う必要があります。」

それは私にとってはうまくいきます、それは他の人を助けることができるかもしれません。

0
Ndrik7