我的问题是,用于创建表的两个相同的查询会给出不同的结果/类/数据库.php
<?php
/**
* Created by IntelliJ IDEA.
* User: Timon
* Date: 10/12/18
* Time: 3:10 PM
*/
namespace canvas\classes;
use \PDO;
class Database
{
private $connction;
public function __construct($configuration = [])
{
include 'values.php';
$this->connction = $pdo = new PDO('mysql:host='.$host.';dbname='.$db, $user, $passwd);
}
public function query($query)
{
return $this->connction->query($query);
}
}
$database = new Database();
现在测试单元是:/test/databasetest.php
<?php
namespace canvas\classes;
use PHPUnit\Framework\TestCase;
class DatabaseTest extends TestCase
{
/**
* @param string $query
*
* @dataProvider providerTestQuery
*/
public function testQuery($query){
$database= new Database();
var_dump($query);
$result=$database->query($query);
var_dump($result);
self::assertNotFalse($result);
}
public function providerTestQuery()
{
return array(
array('Create Database Test'),
array('Use Test'),
array("CREATE TABLE employees (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50)
)"),
);
}
public function testCreateTable(){
$database= new Database();
var_dump($database->query('Use Test'));
self::assertNotFalse($database->query("CREATE TABLE persons(
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
first_name VARCHAR(30) NOT NULL,
last_name VARCHAR(30) NOT NULL,
email VARCHAR(70) NOT NULL UNIQUE
)"));
}
}
使用最后一个数据集测试testquery失败,但testcreatetable成功。如果我手工编写查询,它将失败;如果我从网上复制,它可能成功,也可能失败。ps:我目前正在使用jetbrains的一个想法。可能是格式问题吗?这些查询在我的数据库sql executer中有效。
1条答案
按热度按时间wqsoz72f1#
第一个create表进入了另一个数据库,没有被删除。因此它失败了,因为表已经存在。