2009-10-15 14 views
5

Vorrei avere accesso al campo Seconds_Behind_Master, (come restituito da SHOW SLAVE STATUS) dall'interno di una stored procedure.Come accedere a Seconds_Behind_Master da SQL

Non riesco a capire come ottenere il suo valore all'interno di una variabile. Nessuna delle consuete sintassi SET/SELECT sembra funzionare.

C'è un modo per farlo?

risposta

2

Solo per la cronaca: è stato possibile aprire un cursore per le istruzioni SHOW. Ciò consente di analizzare l'output e lavorare con esso all'interno di una stored procedure.

+0

Azerole, hai qualche codice di esempio per caso? Non riesco a farlo funzionare. – Artem

+0

Sì, ma è solo 5.0. In 5.1 c'è un bug non risolto in mysql che impedisce l'apertura dei cursori su SHOW. – azerole

+0

@azerole Potresti pubblicare la funzione, anche se è limitata a 5.0? –

2

Da quello che vedo nei documenti recenti e MySQL Bug#37187 non sembra esserci alcun modo, ma SHOW SLAVE STATUS per ottenere queste informazioni.

+0

Il problema è che SHOW SLAVE STATUS può essere utilizzato dall'esterno (ad esempio da uno script perl), ma come posso analizzarlo da una stored procedure? – azerole

0

PHP può afferrare tutti i campi della show slave status in una HashMap, come questo:

$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"]; 
} 

che stampa 0 secondi perché tutto sia aggiornato:

>0 

ho provato per un'ora per creare una stored procedure per farlo. Ti raccomando di non sprecare il tuo tempo.

Problemi correlati