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


GUTS  2013-08-14 12:56:24  No: 45084  IP: 192.*.*.*

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

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

編集 削除
igy  2013-08-14 14:09:35  No: 45085  IP: 192.*.*.*

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

編集 削除
GUTS  2013-08-19 12:56:00  No: 45086  IP: 192.*.*.*

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

編集 削除
DEKO  2013-08-19 13:34:27  No: 45087  IP: 192.*.*.*

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

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

編集 削除
GUTS  2013-08-20 07:38:31  No: 45088  IP: 192.*.*.*

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

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

違うかな・・・

編集 削除
igy  2013-08-20 08:25:29  No: 45089  IP: 192.*.*.*

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

編集 削除
GUTS  2013-08-21 08:17:19  No: 45090  IP: 192.*.*.*

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

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

編集 削除
igy  2013-08-21 10:05:15  No: 45091  IP: 192.*.*.*

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

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

編集 削除
GUTS  2013-08-21 13:46:59  No: 45092  IP: 192.*.*.*

「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 13:57:13  No: 45093  IP: 192.*.*.*

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



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

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

編集 削除
GUTS  2013-08-21 15:11:02  No: 45094  IP: 192.*.*.*

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

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

編集 削除
igy  2013-08-21 15:17:46  No: 45095  IP: 192.*.*.*

ダメでしたか・・・・

エラーメッセージの

>ODBC PARADOX DRIVER

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

編集 削除
DEKO  2013-08-21 19:04:46  No: 45096  IP: 192.*.*.*

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

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

編集 削除
GUTS  2013-08-22 07:52:16  No: 45097  IP: 192.*.*.*

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

「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 08:24:03  No: 45098  IP: 192.*.*.*

>fron TEST

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

編集 削除
GUTS  2013-08-23 07:48:43  No: 45099  IP: 192.*.*.*

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

編集 削除
igy  2013-08-23 08:26:19  No: 45100  IP: 192.*.*.*

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

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

編集 削除
GUTS  2013-08-23 10:20:34  No: 45101  IP: 192.*.*.*

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

編集 削除
igy  2013-08-23 10:42:05  No: 45102  IP: 192.*.*.*

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

編集 削除
GUTS  2013-08-26 08:38:22  No: 45103  IP: 192.*.*.*

「ソースコード」

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 09:14:51  No: 45104  IP: 192.*.*.*

>ADOQuery1.ExecSQL;

を、

ADOQuery1.Open;

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

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

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

編集 削除
GUTS  2013-08-27 08:02:45  No: 45105  IP: 192.*.*.*

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

編集 削除