小编Fed*_*oli的帖子

如何列出MySQL数据库中的所有触发器?

列出MySQL数据库中所有触发器的命令是什么?

mysql triggers

93
推荐指数
4
解决办法
10万
查看次数

如何进行数据库单元测试?

我听说在开发使用数据库的应用程序时,您应该进行数据库单元测试.数据库单元测试的最佳实践是什么?进行数据库单元测试以及如何"正确"执行此操作时,主要关注的是什么?

database unit-testing database-testing

43
推荐指数
4
解决办法
4万
查看次数

CREATE FUNCTION错误"此函数没有DETERMINISTIC,NO SQL或READS SQL DATA"

我们的数据库具有生成订单号的功能.它从"设置"表中读取值,递增它,然后返回新值.例如:

CREATE FUNCTION NextOrderNumber() RETURNS INTEGER UNSIGNED NOT DETERMINISTIC
BEGIN
  DECLARE number INTEGER UNSIGNED;
  UPDATE Settings SET IntegerValue=LAST_INSERT_ID(IntegerValue+1) WHERE KeyName='NextOrderNumber';
  SET number=LAST_INSERT_ID();
  return number;
END
Run Code Online (Sandbox Code Playgroud)

注意:不要批评这个功能我知道它有缺陷只是为了说明.

我们使用这个函数如下:

INSERT INTO Orders(OrderNumber, ...)
SELECT NextOrderNumber(), ...
Run Code Online (Sandbox Code Playgroud)

启用二进制日志记录时,CREATE FUNCTION会出现此错误:

此函数在其声明中没有DETERMINISTIC,NO SQL或READS SQL DATA,并且启用了二进制日志记录(您可能希望使用安全性较低的log_bin_trust_function_creators变量)

无论binlog_format设置了什么,上述功能是否真的存在问题?根据我对相关MySQL页面的阅读,我看不出任何理由为什么这个函数与复制不兼容,无论是ROW还是STATEMENT级二进制日志记录.

如果函数是安全的,设置全局log_bin_trust_function_creators = 1会让我感到不安.我不想为所有功能禁用此检查,只需这一项.我可以改为将该函数标记为NO SQL以禁止警告吗?我尝试了它,它的工作原理.这会导致任何问题吗?

mysql stored-functions

15
推荐指数
3
解决办法
3万
查看次数

MySQL中单元测试的最佳工具

我最近在MySQL中做了很多sproc编程.
我必须说我喜欢它.很多.

然而调试这些婴儿很糟糕.
任何人都知道任何可以在My MySQL调试中获得快乐的工具吗?

mysql unit-testing stored-procedures database-testing

10
推荐指数
2
解决办法
6683
查看次数

尝试删除外键时出错:"ERROR 1025(HY000):"

我在尝试删除外键时遇到了一些麻烦.有人可以帮忙吗?

这是我的SHOW CREATE TABLE catgroup:

| catgroup | CREATE TABLE `catgroup` (
  `catgroupid` int(11) NOT NULL AUTO_INCREMENT,
  `category_id` int(11) NOT NULL,
  `group_id` int(11) NOT NULL,
  PRIMARY KEY (`catgroupid`),
  KEY `category_id` (`category_id`),
  KEY `group_id` (`group_id`),
  CONSTRAINT `catgroup_ibfk_1` FOREIGN KEY (`category_id`) REFERENCES `cat
s` (`cid`) ON UPDATE CASCADE,
  CONSTRAINT `catgroup_ibfk_2` FOREIGN KEY (`group_id`) REFERENCES `groups
d`) ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8 |
Run Code Online (Sandbox Code Playgroud)

这就是我试图删除外键的方式:

ALTER TABLE catgroup DROP FOREIGN KEY group_id_ibfk_2;
Run Code Online (Sandbox Code Playgroud)

这是错误信息:

错误1025(HY000):将".\ asset_base\catgroup"重命名为".\ asset_base"时出错

sql2-16b4-4'(错误号:152)

我究竟做错了什么?

mysql foreign-keys

8
推荐指数
1
解决办法
7395
查看次数

SQL,缺少结束,但为什么?

我的SQL过程有问题.MySQLWorkbench告诉我它错过了我的第一个SET的"结束",但不是第二个.我不知道为什么.

DELIMITER $
drop procedure if exists pay10percent$
create procedure pay10percent(IN montant decimal(9,2),IN idResa INT(5))
begin
declare circuitid INT;
SET circuitid = (
            SELECT IDCIRCUIT  
            FROM RESERVATION 
            WHERE IDRESERVATION=idResa
            );
declare montantCircuit decimal(9,2);
SET montantCircuit = (SELECT PRIX FROM CIRCUIT WHERE IDCIRCUIT=circuitid);
end;
$
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)

谢谢.

mysql stored-procedures

5
推荐指数
1
解决办法
3402
查看次数

Errlang:没有右手边的值匹配

我开始使用Erlang,但我已经陷入困境了.我从一本书中复制了这个例子:

-module(echo).
-export([start/0, loop/0]).

start() ->
    spawn(echo, loop, []).

loop() ->
    receive
        {From, Message} ->
            From ! Message,
            loop()
    end.
Run Code Online (Sandbox Code Playgroud)

但是当我尝试它时,我得到一个我不明白的错误:

31> c(echo).          
{ok,echo}
32> f.      
f
33> Pid = echo:start().
** exception error: no match of right hand side value <0.119.0>
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

erlang

4
推荐指数
1
解决办法
1315
查看次数