Saya membuang prosedur tersimpan saya dengan yang berikut ini
C:\>mysqldump -u... -p... -n -d --routines --triggers --all-databases > Z:\stuff.sql
Berikut adalah salah satu prosedur dengan PROSEDUR DROP termasuk:
--
-- Dumping routines for database 'lovesh'
--
/*!50003 DROP PROCEDURE IF EXISTS `LoadMyData` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
/*!50003 SET character_set_client = cp850 */ ;
/*!50003 SET character_set_results = cp850 */ ;
/*!50003 SET collation_connection = cp850_general_ci */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = '' */ ;
DELIMITER ;;
/*!50003 CREATE*/ /*!50020 DEFINER=`lwdba`@`127.0.0.1`*/ /*!50003 PROCEDURE `LoadMyData`()
DETERMINISTIC
BEGIN
DECLARE NDX INT;
SET NDX = 0;
WHILE NDX < 100 DO
INSERT INTO mydata (ti_time) VALUES (NOW() - INTERVAL CEILING(14400*RAND()) SECOND);
SET NDX = NDX + 1;
END WHILE;
END */;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
/*!50003 SET character_set_client = @saved_cs_client */ ;
/*!50003 SET character_set_results = @saved_cs_results */ ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
Ketika Anda menggunakan --skip-opt, itulah yang menyebabkannya karena --opt menyertakan --create-options dan DROP PROCEDURE dianggap khusus untuk MySQL.
-a, --create-options
Include all MySQL specific create options.
(Defaults to on; use --skip-create-options to disable.)
--skip-opt Disable --opt. Disables --add-drop-table, --add-locks,
--create-options, --quick, --extended-insert,
--lock-tables, --set-charset, and --disable-keys.
--skip-opt akan membatalkan --create-options dan karenanya menghapus PROSEDUR DROP.
Misteri terpecahkan !!!
Jawab untuk Pertanyaan Bonus
Itu bukan komentar; itu adalah arahan MySQL. Setiap kali MySQL menjalankan Perintah, ia akan mencari arahan ini yang terbungkus dalam Komentar
Angka 50003 menunjukkan bahwa perintah ini akan mengeksekusi jika dan hanya jika versi MySQL 5.0.3 atau lebih tinggi.
Berikut ini contoh lain dari mysqldump:
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `datas` (
`ID` int(2) DEFAULT NULL,
`CATEGORY` int(2) DEFAULT NULL,
`ORD` int(1) DEFAULT NULL
);
/*!40101 SET character_set_client = @saved_cs_client */;
Angka 40101 menunjukkan bahwa perintah ini akan mengeksekusi jika dan hanya jika versi MySQL 4.1.1 atau lebih tinggi.
Arahan SQL ini ada untuk perlindungan Anda jika Anda memuat mysqldumps ini ke versi sebelumnya. Arahan ini memungkinkan penerimaan penuh perintah tertentu. Tolong jangan hapus mereka.
Namun, jika Anda hanya bekerja dengan MySQL 5.0+ dan berencana untuk membuang prosedur tersimpan Anda secara terpisah, Anda dapat menghapusnya menggunakan Perl atau awk. Secara pribadi saya akan membiarkan mereka.
LoadMyData
() ... AKHIR * / ;;Sebenarnya, tampaknya opsi yang diperlukan untuk menambahkan PROSEDUR DROP dalam output mysqldump (setidaknya di mysqldump Ver 10.13 Distrib 5.6.21-70.1, untuk debian-linux-gnu (x86_64)) adalah
--add-drop-table
:sumber