ラベル mysql の投稿を表示しています。 すべての投稿を表示
ラベル mysql の投稿を表示しています。 すべての投稿を表示

2015/04/07

MySQL For ExcelがExcelシート保存時にマクロ警告を出す

このエントリーをはてなブックマークに追加
Excelシートの保存時にマクロ警告が出る。
マクロなんて使った覚えはない。便利なソフトが台無しだ。
警告内容は、こんな感じ。

次の機能はマクロなしのブックに保存できません
・定義名で保存されている excel 4.0 関数
これらの機能が含まれるファイルを保存する場合は、[いいえ]をクリックし、[ファイルの種類]ボックスでマクロ有効ファイルの種類を選択してください。
マクロなしのブックとして保存する場合は、[はい]をクリックしてください。

先にいうと、アドインとしてMySQL For Excelが動いてた。
そういえば、MySQLをインストールしたな、と。MySQL For Excelがどういう悪さをしていたのかは知りませんが、これをアンインストールしたら現象が解消されました。
なお、うちのExcelはExcel2010です。

原因調査

マクロなんてそもそも使ってない。
「定義名で保存されている~」という意味がそもそも解らなかったので、そこから調べるはめになる。「定義名で保存されている excel 4.0 関数」というメッセージで検索すると、当然マクロ関係の話や名前の定義にたどり着く。身に覚えのない人は、そこからなかなか先に進めないわけです。
名前の定義やマクロなんか使ってないシートの話なので、謎は深まるばかり。
知らないうちにショーカットが機能しちゃったのだろうか。

名前の定義について

名前の定義とは、セルの範囲に名前を付けて解りやすくしておく機能。範囲選択を自分でつけた名前を利用することで、無機質なセルの整理整頓をしやすくしておけるというもの。

【名前の定義】セル範囲に名前をつける
http://kokoro.kir.jp/excel/name.html

でも自分はそんな機能まったく使っていなかった。

※Excel2010の名前の管理は、「数式」タブ→「定義された名前/名前の管理」から確認できます。

シートの問題ではない気がする

仕方ないので、手当たり次第にいろいろ試してみる。
  1. シートをコピーして新規シートにペーストしても同じ警告メッセージ。新規保存のときには出ないけど、開いて上書き保存するときに出るようだ。
  2. 計算も何もないリストアップしただけのシートですら、開いて、即保存で、同じメッセージが出る。
これはおかしい! シートの問題じゃないだろう。
ひょっとして、ウイルスか?と頭をよぎる。冷や汗…。Excelシートに感染するとか、そういうあれか?

MySQL for Excelのアドインがあやしい

オプションを調べていると、MySQL for Excelがアドインに追加されていた。

※「ファイル」タブ→「オプション」→「アドイン」で拡張機能が確認できます。

そういえば、昨日MySQLサーバーをインストールしたので、そのとき一緒にインストールされていた。
いかにもあやしい。どういうツールなのか調べてみるけれど、この先もMySQL for Excelを使うことはない気がする。
試しに消してみる。

アプリケーションの削除から、さくっとアンインストール。

そしてあっさり解消

あっさり、解消。いやあ、よかったよかった。
ガサツな解決方法だけど目をつむりましょう。

完全にMySQL For Excelを犯人扱いしてしまっているけれど、うちのマシンが特異環境かもしれないので、そのあたりはご留意お願いします。
双方の顔を立てるような解決策はないものか、もう少し掘り下げてもよかったかもしれない。けれど申し訳ないけれど元の環境に戻してあれこれするほど興味が沸きそうにない(どちらかというと一刻も早く忘れたいと思ってこの記事を書いている)ので、この辺で〆。

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

2013/06/23

MySQLのWorkBentchからエクスポートしようとするとエラーになる

このエントリーをはてなブックマークに追加
MySQLServerの最新バージョン(5.6.12)をインストールしました。
環境は、Windows8の64bitです。他にもほとんど何も入っていません。クリーンな状態でした。
サーバー引越しのために、データを再構築させました。
さて、MySQLWorkbenchを起動、ServerAdministrationのからエクスポートしておこうと、Data Exportを使用しようとすると…。

mysqldump Version Mismatch
mysqldump.exe is version 5.5.16, but the MySQL Server to be dumped has version 5.6.12.
Because the version of mysqldump is older than the server, some features may not be backed up properly.
It is recommended you upgrade your local MySQL equal to or newer than that of the target server.
The path to the dump tool must then be set in Preferances -> Administrator -> Path to mysqldump Tool:

というエラー。
エクスポートのために使用されるmysqldump.exeというツールのバージョンが適切でないのでバックアップできません、という内容です。
何故? まるごと最新のMySQLがパッケージングされているものをインストールしているはずなのに、バージョン違いでエラーが発生するというのが不可解で、どうしていいのか解らなくなります。

エラーの発生原因

mysqldump.exeというのが、
「C:\Program Files (x86)\MySQL\MySQL Workbench CE 5.2.47」
の下にあるようで、これのバージョンが古い(5.5.16)ようです。

解決方法

新しいmysqldump.exeはどこにあるんだよ、とWebを引っ掻き回してみたのですが、なんと「C:\Program Files\MySQL\MySQL Server 5.6\bin」にありました。
つまり、mysqldump.exeは二つあったようです。デフォルトでWorkbenchサイドにパッケージングされていたものが使われるようになっていたのでした。
※この辺りのパッケージングの仕様はすぐ見直されるんでしょう。

エラーメッセージにもあるように、使用するmysqldump.exeの改めて設定してあげます。
Workbenchの「Preferances -> Administrator -> Path to mysqldump Tool:」に、「C:\Program Files\MySQL\MySQL Server 5.6\bin」を設定してあげます。


なお、当方の環境どおりWindows8の64bitが原因かどうかは沙汰かではありません。エラーメッセージから検索すると、ぞくぞくと英語のページが出現したため、一応方々で発生しているのでしょうかくらいの理解です。
なんにせよ、情報を開示しておくことで、どなたかへの一助となれば幸いです。
以上。

参考ページ

mysqldump - Dump File MySQL 5.6.10 - Stack Overflow
http://stackoverflow.com/questions/15227171/dump-file-mysql-5-6-10

2009/09/25

AccessをMySQLへインポートするとにょろが化ける

このエントリーをはてなブックマークに追加
MySQLの「MySQL Migration Toolkit」を使用して、AccessからMySQLにDBを移行してみると、どうにもにょろが?になってしまうので、調べていました。

結論としては原因は謎のままです。解りませんでした。
「MySQL Migration Toolkit」自体が日本語に弱いんじゃねーの、と懸念しています。

●にょろについて
にょろとは、いわゆる「〜」です。
文字コード的には、何故か、波ダッシュ「〜」と全角チルダ「~」の二種類あるようで、それぞれ文字コードが異なっています。ややこしいので、「波ダッシュ」と「全角チルダ」を区別して、総称する場合は「にょろ」と呼びます。

Windowsは、「にょろ」で変換すると全角チルダ「~」になる。普段使うのも全角チルダ。
MacOSXではキーボードで全角入力すると波ダッシュ「〜」になる。二種類の字形がまったく同じように見えるのも困りものです。
そしてMacOS9はWindowsと同じで、全角チルダが使用されるようです。


なんか変だなとは、思っていたものの、こんなことになっていたとは知りませんでした。
何が困るって、WindowsとMacOSXとMacOS9の混在環境だったら、にょろの含む文字列が真っ当に検索できませんね。

●文字コードについて
この手のテーマで検索すると、どうにもMT4の記事が多い。
文字コードが絡んでいるようで、MySQLの対応するDBの文字コードをutf8に設定することが求められる模様。しかし、すでに、初っ端から、utf8に設定してあったりします。sjisを試してみたけれど変わらず。

●原因/検証
作成したテーブルに、波ダッシュが拒絶されて?になっているのかと思いきや、そうではなかった。
  • 新しく作成されたMySQLのフィールドに、波ダッシュ「〜」を入力するとエラーにならず、?にもならない。
  • ?で検索するとヒットするので、?はツールの表示上の文字が化けているのではなくて、そのまま?という文字が格納されている。
  • 「MySQL Migration Toolkit」のInsert.sqlを出力してみると、この段階ですでに?に置き換わっていた


ということは「MySQL Migration Toolkit」がInsert.sql発行時に、波ダッシュ「〜」を?に置換してる、と推測してしまうわけです。「MySQL Migration Toolkit」がツール上で、回避できる問題かどうかは解らないまま。

●回避策(?)
AccessからODBC経由でMySQLのテーブルを呼び出して、テーブルを丸ごとペーストすれば「にょろ」も問題ないみたいです。
こんな乱暴な方法しかないってことはもちろんないと思うのだけどなー。

ODBC経由でMySQLのテーブルを呼び出す方法は、データベースを作成してから、「ファイル」→「開く」で、ファイルの種類を一番下にある「ODBC database」を選択してあげるとよいです。※Access2000です。

2009/08/31

AccessとMySQLの表記の違い

このエントリーをはてなブックマークに追加
丁寧なドキュメントがあるのでそれを読むのがいいに決まってますが、覚え書きです。
基本的なSQLの表記が異なる箇所を列挙していければよいと思って。

・Access
文字列 "(値)"
日付 #(値)#
テーブル、フィールドなど [(名前)]
文字列結合 "a" & "b"
先頭からn件取得 select top n ~
Boolean "true" / "false"

・MySQL
文字列 "(値)"
日付 '(値)'
テーブル、フィールドなど `(名前)`
文字列結合 Concat("a" , "b")
先頭からn件取得 select ~ limit 0, n
Boolean(TINYINT(1)という型が使用される) -1 / 0

2009/08/01

MySQLのセットアップ

このエントリーをはてなブックマークに追加
言わずと知れたMySQLはオープンソースのSQLデータベースです。

MySQL自体が定番とも言えるほどの人気者なので多くの解説を探すことができるものの、知識がないとやっぱり厳しい。
管理ツールは全編英語(※探せば日本語の管理ツールもあります)。
長らく真っ当な管理ツール(GUI)がなかったという偏見と、前提知識が当たり前のように要求されるという意味もあって敬遠しがちでした。

選択肢としてあるとものすごく便利なので、緊急に必要あってというわけではないけれど学習のために弄っています。
いくつか嵌った点を含めて書いておきます。

●MySQLのダウンロード&インストール

MySQLはバージョン5.1.35。
MySQLの本体部分のインストールなど、下記サイトが参考になりました。


バージョン違いのため、多少セットアップ画面が異なるところがあったもののすんなりインストールできた(と思います)。


●MySQL GUI Toolsのインストール

バージョンは5.0。
MySQLを管理するための管理ツールをインストールした。公式から入手できるといこともあってこれを使うことに。
  1. MySQL Administrator
  2. MySQL Migration Toolkit
  3. MySQL Query Browser
  4. MySQL System Tray Monitor
下記のサイトで全部説明してくれてるので説明は省略。


●ネットワークアクセスの設定

他のマシンからネットワークを通してDBをメンテすることもあると思ってアクセスしてみたがつながらない…。
MySQL Query Browserから「Server Host」を所定のマシンに設定して接続してみた。ローカル環境で「127.0.0.1」を指定する分には問題なくつながることは確認済み。
このようなエラーが出る。

Could not connect to the specified instance.
MySQL Error Number 2003
Can't connect to MySQL server on '(IP)'(10061)
If you want to check the network connection, please click the Ping button.
「指定されたインスタンスに接続できませんでした」ということらしい。
原因の対策には下記のサイトが参考になりました。


要点は、
1.ポート(一般には3306)が開いていない
2.MySQLのユーザー権限設定が変更されていない
3.my.ini になぜか bind-addressが設定されている
二番目の、ユーザー権限設定については知らないと辛い。つまり許可設定しないと接続できないのは当たり前。
項目をそれぞれ確認して、設定したところ接続を確認することができました。

●他のDBから移行

Access2000のMDBから移行するという案件をシミュレートしてみる。MySQL Migration Toolkitを使えば楽チンにできるという甘い言葉に誘われてやってみました。
が、もちろん何も知らないで触ってるわけで、二箇所ほどで詰まりました。その回避策を書いておきます。

Source Database Connectionに「MS Access」を指定。パスワードなどが掛かっている場合は、ユーザー名、パスワードを指定することができるのでしょう。
ウィザード形式で次へ画面を送っていって、一応最後の画面まで到達。

・一行たりともインポートされてない

MySQL Query Browserで見てみると、スキーマが作成されていて、テーブルが作られている。けれど、中身がありません。一行もインポートされていない模様。
もう一度、MySQL Migration Toolkitを起動させて、同様の手順を踏むも、同じ。

いろいろ触りながら、調べていくと、キャラクターコードの設定があるらしいということに行き着く。
MySQL Migration Toolkitの「ObjectMapping」の工程にて、SetParameterを押して設定情報を表示させて、DataBaseとTableのキャラクターコードが設定できるようになっている。
初期は、「Latin1」となっている。
「utf8」を設定することで、「Bulk Transfer」の工程でレコードが吸い出されるようになった。

・1300行足らずしかインポートされない

で、再度MySQL Query Browserで確認してみたけれど、なんて中途半端な。
テーブルの構成から何から確認してみたものの、結局MySQL Migration Toolkitの「Bulk Transfer」の進捗状況が行ったり来たりしてもたもたしていてることが気になってログを見ると、下記のようなメッセージがある。
Packet for query is too large (1067387 > 1048576). You can change this value on the server by setting the max_allowed_packet' variable.

my.iniにmax_allowed_packetというパラメータを設定してあげればよい、とのこと。
MySQL Administratorでは、Startup Variablesから「Advanced Networking」の「Max.packet.size」を設定する(当方は16Mに設定)。
無事にテーブルとレコードの移行が完了、確認できた。

※mysql.ini変更の際はサーバーの再起動をお忘れなく。