[MySQL] Kopieren van stored procedures naar andere server

Pagina: 1
Acties:
  • 114 views sinds 30-01-2008
  • Reageer

  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 24-11 23:24
Als ik een dump doe via PHPMyAdmin dan neemt hij wel mijn tabellen en de inhoud mee, maar stored procedures en dergelijke niet. Hoe kan ik die op een handzame manier kopieren van mijn dev bak naar mijn productie machine?

------

Ik kan niet remote inloggen met MySQL Developer Studio, wat me ook erg logisch lijkt, en ik heb niet direct het beheer over de server.

------

Het overzetten lukt nu na een beetje pielen meestal wel, maar erg vlotjes gaat het allemaal niet. Zijn er tools of komen er tools die dit soort zaken wat makkelijker gaan maken voor de MySQL admins?

[ Voor 47% gewijzigd door BikkelZ op 21-06-2007 09:55 ]

iOS developer


  • Pete
  • Registratie: November 2005
  • Laatst online: 31-10 12:38
Heb je alleen maar toegang tot phpmyadmin? Of het je wel commandline toegang? Met phpmyadmin zou ik het niet direct weten, maar commandline kun je gewoon -R toevoegen aan het mysqldump commando.

petersmit.eu


  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 24-11 23:24
OK, nu heb ik (inderdaad met -R en niet met -r trouwens!) een dump van mijn stored procedures. PHPMyAdmin op de remote server snapt er uiteraard geen reet van - oftewel weer een command line utility?

iOS developer


Verwijderd

Euh, die dump kun je inde bin dir van mysql gooien, mysql command line starten en dan "< dumpfile.sql" typen.

  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 24-11 23:24
OK ik ben al weer een stap verder. Ik heb een pl.sql file aangemaakt op mijn server met ongeveer de volgende (ingekorte) inhoud:

SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
DELIMITER ;;
/*!50003 DROP FUNCTION IF EXISTS `get_totaal_antwoorden` */;;
/*!50003 SET SESSION SQL_MODE=""*/;;
/*!50003 CREATE FUNCTION `get_totaal_antwoorden`(ev_vraag_id INT) RETURNS int(11)
BEGIN

  DECLARE v_totaal_antwoorden INT;

  SELECT COUNT(r.kontakt_id) INTO v_totaal_antwoorden

    FROM reactie r

    LEFT JOIN antwoord a ON r.antwoord_id = a.id

    WHERE a.vraag_id = ev_vraag_id;

  RETURN v_totaal_antwoorden;

END */;;


Ik krijg de volgende error:

code:
1
ERROR 1418 (HY000) at line 4: This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)


Ik heb zelf zoiets van: ¿que?

Maar misschien dat iemand anders zo ziet wat er scheelt? De functie van die /*!50003 achtige comments ontgaat me met name.

Ik gebruik het volgende commando:

code:
1
/usr/bin$ mysql -u root -p telemarketing < /home/admin/pl.sql

[ Voor 5% gewijzigd door BikkelZ op 15-06-2007 11:07 ]

iOS developer


  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 24-11 23:24
OK die comments die snap ik, maar daar struikelt hij niet over.

Die stored procedures draaiden hier lokaal prima, maar om hem extern te kunnen gebruiken moet ik een ini setting aanpassen? :/

iOS developer


  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 24-11 23:24
Before MySQL 5.0.6: In the initial implementation of stored routine logging, statements that create stored routines and CALL statements are not logged. These omissions can cause problems for replication and data recovery.
Dit was het probleem, 5.0.14 naar > 5.0.6.

iOS developer


  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 24-11 23:24
In principe werkt het nu allemaal wel, maar heb ik nog niet echt een eenvoudige procedure kunnen ontdekken om dit soort zaken over te zetten. Daar waar gewone databases redelijk vloeiend over gezet kunnen worden, gaat dit nog erg vaak fout en geeft een heleboel handwerk.

iOS developer

Pagina: 1