Jak smazat neexistující funkci (proceduru) – MySQL – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Jak smazat neexistující funkci (proceduru) – MySQL – Fórum – Programujte.comJak smazat neexistující funkci (proceduru) – MySQL – Fórum – Programujte.com

 

Roman
~ Anonymní uživatel
134 příspěvků
20. 5. 2013   #1
-
0
-

Ahoj,

Delší dobu se trápím s exportem (zálohou) z programu mysqldump. Vyexportuje vše mimo uložených procedur a funkcí podle parametru.

Zpracování uložených procedury a fukcí skončí chybou. Zkoušel jsem to vyexportovat zvlášt a chyba byla funkce, která již neexistuje. Obvyklý zápis pro smazání funkce ...

DROP FUNCTION IF EXISTS function_name ... skončí chybou

, že funkce neexistuje. Díval jsem se do information_schema do
routines a je tam funkce, která již neexistuje a navíc je napsaná do databáze místo "test" je "TEST".

DROP FUNCTION IF EXISTS TEST.function_name

je rovněž nepoužitelné. Došel jsem k závěru, že je jen chyba v information_schema  tabulka routines

Předpokládám, že chybu jsem udělal napsáním procedury místo s malým "test", tak jsem zadal velkým "TEST".

Nevím proč, ale MySQL to vložil do databáze, která vlastně taky neexistuje. Ještě jsem zkoušel vytvořit databázi se stejným jménem ale velkým písmem, ale nejde to. Nemáte nějaký nápad, jak tuto funkci smazat. Pak bude fungovat mysqldump.

Roman

WIN XP + MySQL 5.0.1 + Toad for MySQL 6.3

Nahlásit jako SPAM
IP: 78.108.152.–
Mixxy
~ Anonymní uživatel
179 příspěvků
21. 5. 2013   #2
-
0
-

Cau, mohl bys prosim poslat chybovou hlasku, kterou dostanes pri mazani funkce? Zkousel jsi jenom samotne

drop function test.xxxx? Co uvozovky drop function ´test´.xxx? Zkousel jsi to i pod rootem/administratorem ? Zkus smazat funkci treba v phpmyadminovi a uvidis, jaky ti to vyhodi DDL.

Nahlásit jako SPAM
IP: 85.132.138.–
Roman
~ Anonymní uživatel
134 příspěvků
22. 5. 2013   #3
-
0
-

#1 Roman
#2 Mixxy
Ahoj

Spustil jsem to z příkazového řádku

mysqldump -uroot -proot --no-data --routines --triggers --force test > "c:\Program Files\MySQL\Zalohy\backup.sql"

Odpověď:

mysqldump: mysqldump: Couldn't execute 'SHOW CREATE FUNCTION `SP_PLAN_NAPLNENI_VLOZ`': FUNCTION SP_PLAN_NAPLNENI_VLOZ does not exist (1305

Pak jsem spustil MySQL a zkusil to přes řádek. Stále se hlásím s rootem.

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 497 to server version: 5.0.15-nt

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use TEST
Database changed
mysql> drop function `TEST`.`SP_PLAN_NAPLNENI_VLOZ`;
ERROR 1305 (42000): FUNCTION test.SP_PLAN_NAPLNENI_VLOZ does not exist

mysql> use test;
Database changed
mysql> drop function `test`.`SP_PLAN_NAPLNENI_VLOZ`;
ERROR 1305 (42000): FUNCTION test.SP_PLAN_NAPLNENI_VLOZ does not exist
mysql>

Funkci nelze vymazat standartním způsobem. Nevím jestli pod Windows by to nemělo být jedno ... velká/malá.

Nastavil jsem information _schema a zkusil to přes tabulku


USE information_schema;
mysql> select specific_name from routines where specific_name = 'sp_plan_naplneni_vloz';
+-----------------------+
| specific_name         |
+-----------------------+
| SP_PLAN_NAPLNENI_VLOZ |
+-----------------------+
1 row in set (0.03 sec)

mysql>

Stále tam visí.

Zkusil jsem ji vymazat jako záznam.

mysql> delete from routines where specific_name = 'sp_plan_naplneni_vloz';
ERROR 1044 (42000): Access denied for user 'root'@'localhost' to database 'infor
mation_schema'
mysql>

Což podle mne znamená, že MySQL si tuto část chrání a nedovolí ani administrátorovi do ní zasahovat. Což je vlastně logické. Jak se ale zbavit této chyby ... to už nevím.

Ještě jsem zkusil jsem vyexportovat (udělat si nějakou zálohu) v phpMyAdmin

-- phpMyAdmin SQL Dump
-- version 3.2.5

phpMyAdmin vyexportoval routines bez chyby. Řešení pro mě, je ručně zalohovat přes PHPMyAdmina po změnách.
Rád bych ale opravil uvedený problém, abych mohl mít stále aktuální zálohování. Tj aby proběhla plánovaná záloha přes MySQLdump.

Dík za každou radu.

Roman

Nahlásit jako SPAM
IP: 78.108.152.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 13 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý