Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment puis-je appeler une procédure stockée sur un serveur MySQL Ubuntu distant?

AFAIK, vous ne pouvez pas appeler une procédure stockée dans le serveur A à partir du serveur B.

Ce que je ferais, c'est :

  1. Modifiez la procédure afin que la sortie soit stockée dans une table.
  2. Utilisez mysqldump pour vider les données de cette table de sortie et les stocker dans l'autre serveur.

Exemple :

Sur le serveur A, la procédure peut ressembler à ceci :

delimiter $$
create procedure my_procedure()
begin
    -- Create a table to store the output:
    drop table if exists temp_result;
    create table temp_result (
        CID int not null primary key,
        name varchar(50)
    );
    -- Populate the table
    insert into temp_result
        select ...
end $$
delimiter ;

Sur le serveur B, exécutez l'instruction suivante dans le shell, pas dans MySQL CLI :

mysqldump <options_A> db_A temp_result --no-create-db --add-drop-table | mysql <options_B> db_B

où :

  • <options_A> Les options nécessaires pour se connecter au serveur A depuis le serveur B :
    -h <IP of server A> -u <user> -p<password> .
  • db_A La base de données du serveur A où le résultat est stocké
  • <options_B> Les options nécessaires pour se connecter au serveur B :
    -h localhost -u <user> -p<password>