MySqlのデーターベース内のテーブルのインデックスの一覧を取得する方法は?


GUTS  2013-08-14 21:56:24  No: 45084

先日はSyakeさんに教えて頂いて有難うございます。さて似たような質問ですが・・・

TADOQueryを使ってMySqlのデーターベースを使っています。データーベース内のテーブルのインデックスの一覧を取得する方法を御存知の方、お教え願います、宜しくお願いします。


igy  2013-08-14 23:09:35  No: 45085

SHOW INDEX 構文(SHOW INDEX FROM tbl_name)は、いかがですか?


GUTS  2013-08-19 21:56:00  No: 45086

igyさん、有難うございます。夏季休暇の為書き込み遅れました。
 
SHOW INDEXやってみたのですが残念ながらだめでした。


DEKO  2013-08-19 22:34:27  No: 45087

SQL 投げるだけなのでイケそうな気はしますれど、
何が駄目だったのでしょうか?

[SHOW INDEX (MySQL)]
http://dev.mysql.com/doc/refman/5.1/ja/show-index.html


GUTS  2013-08-20 16:38:31  No: 45088

未熟な私の憶測ですが・・・

SHOW INDEXはMySqlのコマンドプロンプト(DOS)から表示されるものでCREATEやUPDATEの様にテーブルを操作するものではないからみたいです。

違うかな・・・


igy  2013-08-20 17:25:29  No: 45089

DelphiXEで試したのですが、
dbExpressやZeoslibだと、SELECT文でデータを取得するのと同じ方法で取得できましたけど・・


GUTS  2013-08-21 17:17:19  No: 45090

igyさん、私の方はADOでやってました

dbExpressのサンププログラムのサイトは御存知でしょうか?


igy  2013-08-21 19:05:15  No: 45091

>igyさん、私の方はADOでやってました

具体的には、どのようなコードを書きましたか?
(エラーメッセージなどは表示しましたか?)


GUTS  2013-08-21 22:46:59  No: 45092

「ADOConnectionはつながってると仮定します」

ADOQuery1.Close; 
ADOQuery1.SQL.Clear; 
ADOQuery1.SQL.Add('SHOW INDEX FROM FROM TEST');
ADOQuery1.ExecSQL;

エラーは以下の通りです。

「Microsoft」「ODBC PARADOX DRIVER」SQLステートメントが正しくありません。DELETE,INSERT,PROCEDER,SELECTまたはUPDEATEを使用して下さい

宜しくお願いします。


igy  2013-08-21 22:57:13  No: 45093

>ADOQuery1.SQL.Add('SHOW INDEX FROM FROM TEST');
>ADOQuery1.ExecSQL;

>ADOQuery1.SQL.Add('SHOW INDEX FROM TEST');
>ADOQuery1.Open;

にするのは、いかがですか?


GUTS  2013-08-22 00:11:02  No: 45094

igyさん、有難う御座います。

残念ながらADOQuery1.Openはダメでした・・・


igy  2013-08-22 00:17:46  No: 45095

ダメでしたか・・・・

エラーメッセージの

>ODBC PARADOX DRIVER

がちょっと気になりますが・・・
(もしかして、MySQLじゃなくて、Paradox?)


DEKO  2013-08-22 04:04:46  No: 45096

> がちょっと気になりますが・・・
> (もしかして、MySQLじゃなくて、Paradox?)
igy さんが指摘されているように Paradox ODBC ドライバ用の
コネクション文字列になっていると思われます。

ADOConnection.ConnectionString のコネクション文字列を確認してください。


GUTS  2013-08-22 16:52:16  No: 45097

すみません、エラーメッセージが間違っていました。

「Mysql」「ODBC 5.1Driver」「mysqlld-5.5.16」you have an error in your SQL syntax; check the manual that correspomds to your MYSQL server version for the right syntax to use near 'fron TEST' at line 1.

これが正しいエラーメッセージです


igy  2013-08-22 17:24:03  No: 45098

>fron TEST

fron を from にしたら、どうなりますか?


GUTS  2013-08-23 16:48:43  No: 45099

igyさん、すみません。前回のエラーメッセージの「fron」は私のオペミスでした。エラーは同じです。


igy  2013-08-23 17:26:19  No: 45100

>ADOQuery1.SQL.Add('SHOW INDEX FROM FROM TEST');

では、FROM を繰り返している部分は、いかがですか?


GUTS  2013-08-23 19:20:34  No: 45101

8/21の私の投稿ですよね、これもオペミスです。度々すみません。


igy  2013-08-23 19:42:05  No: 45102

では、現時点でのソースコードは、どのような記載になってますか?
また、エラーメッセージは、どのようになっていますか?
(確認のため、同じような質問になりますが・・・)


GUTS  2013-08-26 17:38:22  No: 45103

「ソースコード」

ADOQuery1.Close; 
ADOQuery1.SQL.Clear; 
ADOQuery1.SQL.Add('SHOW INDEX FROM TEST');
ADOQuery1.ExecSQL;

「エラーメッセージ」

「Mysql」「ODBC 5.1Driver」「mysqlld-5.5.16」you have an error in your SQL syntax; check the manual that correspomds to your MYSQL server version for the right syntax to use near 'from TEST' at line 1.

igyさん、暑いところすみません。


igy  2013-08-26 18:14:51  No: 45104

>ADOQuery1.ExecSQL;

を、

ADOQuery1.Open;

しても、同じエラーメッセージが表示するようなら、お使いの環境(ODBC)では、だめなのかもしれませんね。

# SQL文のほうは、'FROM TEST'なのに、エラーメッセージでは'from TEST'となっているので、
# 実際にエラーに該当するSQL文が、提示されているSQL文とは別な可能性もありますが・・

ちなみに、dbExpressは、(最新のDelphiでも)MySQL 5.5 は対応していないようです・・・


GUTS  2013-08-27 17:02:45  No: 45105

igyさん、DEKOさん、暑い中本当に有難う御座いました。解決チェックは付けれれませんでしたが皆様のお気持ちには非常に感謝しています。
これからも宜しくお願いします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加