我正在尝试使用User为我的NUnit类创建一个集成测试,我想要做的是启动一个transaction,更新我的MySQL测试db,而不是回滚。
这是我的代码,更新很好,但在和我的数据库保持更新。在MySQL Workbench中调用我的查询很好。
[TestFixture]
public class UtenteIntTest
{
private User user;
bool result;
[SetUp]
public void Setup()
{
//Execute
我有一个新的.NET 4.0控制台应用程序,它使用:
MySql 6.4.4.0
实体框架4.2 (代码优先)
2010
到目前为止这是可行的。我可以从数据库中进行添加和读取。
现在,当我添加TransactionScope时,如下面的示例所示:
public static void TestInsert()
{
using (TransactionScope scope = new TransactionScope())
{
using (var context = new MyDbContext())
{
我有一个带有方法的数据库类,如下所示。foo和bar都是全无操作。因此,需要进行交易。请注意,我使用的是MySQL 5.5.21和MySQL .NET Connector 6.6.4。
public void foo()
{
using (var transaction = new TransactionScope())
{
// This call yields a 'System.Transactions.TransactionException'
bar();
insertStuff();
当使用MySQL启动事务并由MySQL决定回滚时(在表有AUTO_INCREMENT列的情况下),列是否得到.在回滚过程中减少了吗?
或者应该这么做?
在事务数据被正确回滚的情况下,我遇到了一些问题--但看起来表是自动递增的,而不是在回滚中减少的。
# BOTH TABLES START OUT EMPTY // TABLE1 ID is **auto_increment**
START TRANSACTION;
INSERT INTO `TABLE1` (`ID` ,`NAME`) VALUES (NULL , 'Ted'); # MySQL TABLE1 **ID
我似乎有一个错误的想法:
update table_name set id=222 where id >333;
我的旧观点是,如果没有begin,commit就不会启动事务。但这似乎是错的。
但是当我阅读mysql 时,我发现似乎所有的sql都会在transaction.if中不显式地使用begin和commit,它将启动InnoDB中隐含的事务。
在InnoDB中,所有用户活动都发生在事务中。如果启用了自动提交模式,则每个SQL语句都会自行形成单个事务。默认情况下,MySQL为每个启用自动提交的新连接启动会话,因此如果该语句没有返回错误,则在每个SQL语句之后执行提交。如果语句返
我已经创建了一个包含以下详细信息的表用户
{
id , //autoincrment
name
}
和表帐户,它有一个具有外键关系的用户。
Account {
id , //autoincrement
userid //foreign key reference to user
}
当我在user表中不存在的值userId中插入to account时,就会得到约束调用异常。
Cannot add or update a child row: a foreign key constraint fails (`schema`.`account`, CO
我正在编写一些代码,它使用行级锁定和MySQL (innodb后端)。
伪码是:
START TRANSACTION
SELECT * FROM foo WHERE foocondition FOR UPDATE
UPDATE foo set bar=value WHERE foocondition
COMMIT
我在mysql文档中找不到提交后持有的锁的信息。
我是否必须在提交后执行“解锁表”,还是它是隐式的?答案应该是“不”,但我想得到有关的反馈。
使用PyCharm数据库工具通过SSH隧道连接mysql数据库。
我只是简单地select * from table_x,但是数据库工具返回相同的结果(即使在插入/更新表之后)。我仔细检查了所有的缓存选项,都关闭了。
我在同一个表上尝试了不同的查询,比如select ... from table_x where id > ...,但是结果没有改变。
我也尝试了select SQL_NO_CACHE * from table_x,但没有成功。
其他工具运行正常,这就是为什么它看起来更像是一个bug,或者它到底是什么?