Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann ich eine gespeicherte Prozedur auf einem Remote-MySQL-Ubuntu-Server aufrufen?

AFAIK, Sie können eine auf Server A gespeicherte Prozedur nicht von Server B aufrufen.

Was ich tun würde, ist:

  1. Ändern Sie die Prozedur so, dass die Ausgabe in einer Tabelle gespeichert wird.
  2. Verwenden Sie mysqldump um die Daten dieser Ausgabetabelle zu dumpen und auf dem anderen Server zu speichern.

Beispiel:

Auf Server A kann die Prozedur etwa so aussehen:

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 ;

Führen Sie auf Server B die folgende Anweisung in der Shell aus, nicht in der MySQL-CLI :

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

wo:

  • <options_A> Die Optionen, die benötigt werden, um sich von Server B mit Server A zu verbinden:
    -h <IP of server A> -u <user> -p<password> .
  • db_A Die Datenbank auf Server A, wo das Ergebnis gespeichert wird
  • <options_B> Die für die Verbindung mit Server B erforderlichen Optionen:
    -h localhost -u <user> -p<password>