汇总:DELETE from mysql.proc能否安全地从MySQL 5.7继续使用?
在问题中,有人提到在MySQL中不可能在存储过程中使用DROP PROCEDURE (mysql代码1357,“不能从另一个存储例程中删除或更改%s”)。
根据经验:
DELETE from mysql.proc WHERE db = <db-name> AND name LIKE '<procedure-prefix>%';
反而看起来很好。
在一项评论中,有人问了这个问题(但没有回答):
mysql.proc仍然是与5.7中的MySQL元信息交互的可行方法吗
我对mysql创建过程脚本有点困惑。我的脚本如下所示:
DELIMITER //
DROP PROCEDURE play;
CREATE PROCEDURE play()
BEGIN
insert into hi (name,id)VALUES ('apple','2010');
END
//
它不会插入到表hi中。
1.)mysql中存储过程的替代方法,可以对其进行更改,而不是删除并重新创建
2.)维护数据库版本的简单方法我目前正在手动创建log.sql文件,例如示例log.sql文件
ALTER TABLE `ship`
CHANGE COLUMN `is_deleted` `is_deleted` INT(11) NULL DEFAULT 0 ;
DROP procedure IF EXISTS `get_ship`;
DELIMITER ;;
CREATE PROCEDURE `get_ship`(
)
BEGIN
do something;
end if;
END ;;
DELIMI
您好,我有一个包含此内容的文件
mysql -uroot -ppass sas -e 'SHOW CREATE PROCEDURE add_customer\G'
mysql -uroot -ppass sas -e 'SHOW CREATE PROCEDURE add_order\G'
mysql -uroot -ppass sas -e 'SHOW CREATE PROCEDURE add_to_cart\G'
mysql -uroot -ppass sas -e 'SHOW CREATE PROCEDURE add_to_w
基本上,我试图创建一个存储过程,其中包含一个if else语句,该语句检查mysql服务器版本,并根据该版本执行一个具有正确mysql语法的create用户来创建用户。我们有一个mysql 5和mysql 8服务器,根据客户的选择,我们需要在特定的服务器版本(即mysql 8或5)上创建一个用户。
USE test;
DROP PROCEDURE IF EXISTS add_user ;
CREATE PROCEDURE add_user()
BEGIN
IF (SELECT VERSION() = '5.7.20-log') THEN
GRANT ALL PRIVI
我刚开始使用程序,似乎不能让我的程序正常工作。我正在使用WAMPP v5.1.36,并使用MySQL服务器上的MySQL控制台输入代码。如果我去(重新)创建这个过程。我得到错误#1304 (42000)。
mysql> DELIMITER //
mysql>
mysql> CREATE PROCEDURE modx.getCRID (IN x VARCHAR(255),OUT y INT)
-> BEGIN
-> DECLARE y INT;
-> SELECT id INTO y
-
我有一个表,其中我不能复制行,因为其中一个字段上有一个名为items.calcPrice的stored procedure,它不再存在。
下面是MySQL命令:
INSERT INTO items (folder_id)
VALUES (56)
错误消息显示,"Couldn't write row. FUNCTION items.calcPrice does not exist."
如何在我的表中识别和删除此stored procedure?我有2个字段有一个“价格”值,所以我不确定这个procedure是在哪个字段上操作。
我有一个从Python (包装在Django中)执行的MySQL存储过程。当我尝试执行第二条语句时,收到错误消息"commands out of sync;you‘t run this command now“。在这一点上我不能提交事务。当我调用一个过程时,这只是一个问题。该怎么办呢?
cursor.callproc('my_mysql_procedure', [some_id,])
result = cursor.fetchall()
for r in result:
do something
cursor.execute("select * fr
我想知道如何在DROP TABLE IF EXISTS过程中使用MySQLstored。我正在编写一个相当长的mySQL存储过程,它将完成大量工作,然后加载一个包含结果的临时表。然而,我在做这项工作时遇到了困难。
我看过一些做临时表的方法。基本上,你要么创建临时表,处理它,然后把它放在最后.或者你放弃它,如果它存在,创建它,然后做你的工作。
我更喜欢第二种方法,这样您就可以开始清理,这是对表是否存在的内建检查。然而,我似乎无法让它发挥作用:
以下是我的例子:
这工作:
DELIMITER//
DROP PROCEDURE IF EXISTS pTest//
CREATE PRO
我试图将create过程查询从节点js发送到MYSQL。我正在读取Mysql.proc表以获得存储过程定义。
Mysql代码在从mysql客户机(如工作台或hedis )提交时运行良好。
在从NodeJS提交代码时获取以下错误
{ Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CREATE PROCEDURE `qwe`
如何在Mysql中更改存储过程。
DROP PROCEDURE IF EXISTS sp_Country_UPDATE;
CREATE PROCEDURE sp_Country_UPDATE
( IN p_CountryId int,
IN p_CountryName nvarchar(25),
IN p_CountryDescription nvarchar(25),
IN p_IsActive bit,
IN p_IsDeleted bit )
UPDATE
Country
SET
CountryName =
我使用MySql工作台6.2,并在MySql工作台中创建了这个简单的存储过程
USE `MyDB`;
DROP procedure IF EXISTS `new_procedure2`;
DELIMITER $$
USE `MyDB`$$
CREATE PROCEDURE `new_procedure2` ()
BEGIN
INSERT INTO Country (BaseName) VALUES('Canada');
END
$$
DELIMITER ;
创建成功了,但是如果我在MySql工作台中刷新,Sotred过程就会被删除。我打开了PhpMyAdmin,我可以看到存
你好,我正在尝试将选定的文本放入一个变量中,然后将其添加到我想要执行的字符串中。下面是我想要使用的列表
SHOW CREATE PROCEDURE name\G
SHOW CREATE PROCEDURE add_contact_us\G
SHOW CREATE PROCEDURE add_customer\G
SHOW CREATE PROCEDURE add_order\G
SHOW CREATE PROCEDURE add_to_cart\G
SHOW CREATE PROCEDURE add_to_wish_list\G
SHOW CREATE PROCEDURE add
我在Windows机器上使用MySQL innodb version 5.7.10 'MySQL Community Server (GPL)'。如果我从MySQL工作台运行它,下面的脚本运行得很好:
DROP PROCEDURE IF EXISTS procedure1;
DELIMITER //
CREATE PROCEDURE procedure1(IN pageSize BIGINT)
BEGIN
SELECT * FROM table1 LIMIT pageSize;
END //
DELIMITER ; -- note that there
我很困惑,并希望这里的人能得到一个快速而简单的答案。我重新安装了MySQL 5.5,并试图将参数传递到存储过程中。存储过程不会读取参数值。MySQL不会抛出错误,并使用空参数处理代码。以下是代码:
DELIMITER $
CREATE DEFINER=`root`@`%` PROCEDURE `testing`(IN parameter INTEGER)
BEGIN
UPDATE table_name SET valueToChange = 'Test' WHERE mainID = @parameter;
END
下面是我用来命名它的查询:
USE database
这是我的empDetails表,我试图在它上创建一个存储过程。
mysql> describe empDetails;
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| id | int(3) | NO | PRI | 0 | |
| name
我正在使用以下sql:
DELIMITER $$
DROP PROCEDURE IF EXISTS `get_auto_increment_settings`$$
CREATE PROCEDURE `get_auto_increment_settings`()
BEGIN
select @@global.auto_increment_offset as 'offset', @@global.auto_increment_increment as 'increment' ;
END $$
DELIMITER ;
我将它存储在db_auto_in
我使用的是MySql命令行5.6.11,当我试图在命令行中看到我的存储过程时,如下
SHOW PROCEDURE CODE sp_my_procedure
我得到了:
ERROR 1289 (HY000): The 'SHOW PROCEDURE|FUNCTION CODE' feature is disabled; you need MySQL built with '--with-debug' to have it working
如何使用该命令在Windows中使用“- with”运行mysql (我看到了文档,但讨论了如何在Linux中这样做)?
我正在编写一个简单的MySQL存储过程:
DELIMITER $
DROP PROCEDURE IF EXISTS GetUserByCaseId $
CREATE DEFINER = 'DEV_Organization'@'localhost'
PROCEDURE GetUserByCaseId (IN searchedForId VARCHAR(8))
LANGUAGE SQL NOT DETERMINISTIC READS SQL DATA SQL SECURITY DEFINER
BEGIN
SELECT
CaseIdAuthent
这是我第一次学习存储过程。我在这里有:
DELIMETER //
DROP PROCEDURE IF EXISTS RepeatTomProc //
CREATE PROCEDURE RepeatTomProc()
BEGIN
DECLARE x INTEGER;
SET x = 1;
REPEAT
INSERT INTO TOM VALUES(x);
SET x = x + 1;
UNTIL x > 100
END REPEAT;
END //
DELIMITER;
我想要发生的是,当