MySQL 更新查询成功但值根本没有改变

标签 mysql stored-procedures sql-update

我有一个问题,我创建了一个存储过程来通过发送他们的电子邮件 ID 和激活 key 来激活用户

这是 SQL 语法(在 MySQL 中)

DELIMITER $$

CREATE PROCEDURE `dbname`.`sp_userActivate` (
    IN email VARCHAR(140),
    IN ac VARCHAR(64)
)
BEGIN
SET SQL_SAFE_UPDATES=0;
UPDATE user SET activated = 1
    WHERE user.email = email AND 
      user.activation_key=ac;
commit;
END

当我执行语法时,它执行成功了,但是当我查看表格时,激活的值仍然是= 0(根本没有更新)

我查看了两次以上以确保电子邮件和激活与存储在表中相同,

这个查询有什么问题?

更新

这是我在模式中的表结构

Table Design

预先感谢您的帮助。

创建表的SQL语句

CREATE  TABLE IF NOT EXISTS `db`.`user` (

`no` INT(11) NOT NULL AUTO_INCREMENT ,
`username` VARCHAR(140) NOT NULL ,
`password` VARCHAR(128) NOT NULL ,
`firstname` VARCHAR(300) NOT NULL ,
`lastname` VARCHAR(300) NULL DEFAULT NULL ,
`email` VARCHAR(140) NOT NULL ,
`pepper` CHAR(128) NOT NULL ,
`activation_key` VARCHAR(64) NULL DEFAULT NULL ,
`gender` CHAR(1) NULL DEFAULT NULL ,
`activated` CHAR(1) CHARACTER SET 'latin1' COLLATE 'latin1_bin' NULL DEFAULT '0' ,
PRIMARY KEY (`no`) ,
UNIQUE INDEX `username` (`username` ASC) ,
UNIQUE INDEX `email` (`email` ASC) ,
INDEX `user_firstname_idx` (`firstname` ASC) ,
INDEX `user_lastname_idx` (`lastname` ASC) )

例如行

insert into 
user(username, password,firstname, lastname, email,pepper,activation_key,gender)
values("usr1test","c781bf44a464a5946ef36a7250f5504388914bbf6287fabaf938472f46c413d71cd7bf2b3077eeac8675419d5f022ff3652ba7e13e8","user1","test","usr1test@localhost","af41bfa3c9324f39fd82f84125967b38969662256cf8249e73e3bd2cef3928b5","OGE4Y2E2OWUtMmM2Mi00MjJkLWI0NTQtNzJkZDQ1OTcxNjUx",'M');

最佳答案

这是对我有用的程序:

DROP PROCEDURE IF EXISTS sp_userActivate;
DELIMITER $$

CREATE PROCEDURE sp_userActivate (
    IN email VARCHAR(140),
    IN ac VARCHAR(64)
)
BEGIN
    SET SQL_SAFE_UPDATES=0;
    UPDATE `user`
        SET activated = 1
        WHERE 
            `user`.`email` = email
        AND 
      `user`.`activation_key` = ac;
    COMMIT;
END $$
DELIMITER ;

运行它,然后尝试:

CALL sp_userActivate('usr1test@localhost', 
'OGE4Y2E2OWUtMmM2Mi00MjJkLWI0NTQtNzJkZDQ1OTcxNjUx');

它在我的机器上运行正常。

关于MySQL 更新查询成功但值根本没有改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16770010/

相关文章:

mysql - 工作单元的副作用可以用 TransactionScope 修复,但不适用于 MySql.Data

MySQL 5.7.11 mysql_secure_installation 不工作

sql - 锁定 SQL Server 存储过程

sql - 如何输出多个实体?(oracle sql)

sql - 每天运行一个 Oracle SQL 更新脚本

python - 从另一个 postgres 表更新一个 postgres 表

SQL 比较正在更新的字段

mysql - 备份的理想 mysqldump 选项

python - mysql django 的 NULL 和 FALSE 是否相同?

sql - 用于获取表中每个 ID 的条目总和的存储过程