- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有人可以解释一下sqlite :: memory如何工作吗?据我了解,它仅适用于每个实例,因此您不能例如使用一个PDO实例创建数据库模式,并使用sqlite :: memory通过另一个PDO实例填充刚刚创建的表?
您只需要将PDO实例作为参数传递或使其全局?
我为什么要问,这是因为我正在读一本有关单元测试的书,在一个示例中,他们用表Users创建了一个内存数据库,并用一条记录填充了它,这是通过phpUnit setUp()方法和阅读该表由PDO的另一个实例完成,该实例是用实际代码创建的,必须进行测试。
在我看来,PDO内存数据库的每个实例都有其自己的独立数据库,但也许我缺少了一些东西。
谢谢您的意见,谢谢。
$ schema = <<< SQL
创建表“用户”(
“ id”整数主键自动增加,不为NULL,
“用户名” VARCHAR UNIQUE NOT NULL,
“电子邮件” VARCHAR UNIQUE NOT NULL,
“代码” VARCHAR
);
SQL;
$ dsn ='sqlite ::内存:';
// instance1
$ db1 =新的PDO($ dsn);
$ db1-> setAttribute(PDO :: ATTR_ERRMODE,PDO :: ERRMODE_EXCEPTION);
$ db1-> exec($ schema);
$ db1-> exec(
“插入用户(用户名,电子邮件)
VALUES('John Doe','user @ example。com');“
);
$ statement1 = $ db1-> prepare('SELECT * FROM Users WHERE email =:email;');
var_dump($ statement1);回声PHP_EOL; // object(PDOStatement)...
// instance2尝试访问inst1内存数据库并失败
$ db2 =新的PDO($ dsn); //还有内存数据库
$ db2-> setAttribute(PDO :: ATTR_ERRMODE,PDO :: ERRMODE_EXCEPTION);
$ statement2 = $ db2-> prepare('SELECT * FROM Users WHERE email =:email;');
var_dump($ statement2);回声PHP_EOL; // PDOException”,并显示消息“ SQLSTATE [HY000]:一般错误:1没有此类表:Users...。
最佳答案
如代码所示,每个new PDO('sqlite::memory:')
调用都会创建一个新的独立内存数据库。
我不知道那本书是做什么的,但是如果您要重用内存数据库,则必须确保测试设置和您的实际代码共享相同的数据库连接。
关于sqlite - pdo sqlite::memory:共享和终身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18814644/
是否有在MVVM应用程序中使用Autofac的示例?我不确定在MVVM环境中如何控制生命周期和对象处置。 我知道我可以创建一个生命周期并从其下解决,但这确实更像是服务定位器模式而不是IoC模式。 最佳
我有一个 Java 应用程序,通常具有非常健康的垃圾收集统计信息。永久收集通常每小时左右发生一次,而 STW 部分只需要几分之一秒。但奇怪的是,收集总是在应用程序启动后的前五分钟内发生。这是一个真正的
我是一名优秀的程序员,十分优秀!