2009-10-15 9 views
5

ストアドプロシージャ内からSeconds_Behind_Masterフィールドへのアクセス権(SHOW SLAVE STATUSによって返される)を取得したいとします。SQLからSeconds_Behind_Masterにアクセスする方法

変数内で値を取得する方法がわかりません。通常のSET/SELECT構文は動作しません。

これを行う方法はありますか?

答えて

2

ちょうど記録のために、SHOWステートメントのカーソルを開くことが可能であることが判明しました。これにより、出力を解析し、ストアドプロシージャ内で出力を処理することができます。

+0

Azerole、万が一サンプルコードがありますか?私はそれを働かせるように見えません。 – Artem

+0

はい、5.0のみです。 5.1では、mysqlにSHOWのカーソルを開かない不具合のバグがあります。 – azerole

+0

@azerole 5.0に制限されていても、この機能を公開していただけますか? –

2

最近のドキュメントやMySQL Bug#37187に記載されていますが、この情報にはどのような方法もありません。SHOW SLAVE STATUS

+0

問題は、外部からSHOW SLAVE STATUSを(例えばperlスクリプトから)使用できることですが、どのようにストアドプロシージャから解析できますか? – azerole

0

PHPはこのように、ハッシュマップへshow slave statusのすべてのフィールドをつかむことができます。

すべてが最新のものであるので、0秒を表示します
$db = new pdo(
    "mysql:host=your_database_hostname;dbname=your_database_name", 
    'your_username', 'your_password'); 

$sql = 'show slave status'; 

$query = $db->query($sql); 
$res = $query->fetchall(); 

foreach($res as $item){ 
    print ">" . $item["Seconds_Behind_Master"]; 
} 

>0 

私は時間のために試してみましたこれを行うストアドプロシージャを作成します。あなたの時間を無駄にしないことをお勧めします。

関連する問題