我有两次连接到master数据库的奇怪问题。
$devdb01 = $this->load->database('master',true);
$dbstate = $this->load->database('mastercheck',true);
我有2个不同的连接ID,但似乎我在master数据库上运行查询,即使它是一个单独的数据库连接,它也不会执行另一个查询。基本上我正在尝试使用运行恢复数据库的SP,然后运行另一个查询来检查数据库是否仍处于恢复状态。
我按以下方式运行查询:
$dbresult=$devdb01->query($query);
$dbcheck=$dbstate->query($checkquery);
echo $devdb01->conn_id;
echo $dbstate->conn_id;
$query = "EXECUTE master..sqlbackup '-SQL \"RESTORE DATABASE $dbname FROM DISK = [$restoredir$backupselected] WITH REPLACE, MOVE [$dataname] TO [$datadir$dbname$dataprepend] , MOVE [$logname] TO [$logdir$dbname$logprepend]\"'";
$dbresult=$devdb01->query($query);
$checkquery="SELECT state_desc from sys.databases where [name]='$dbname'";
$dbcheck=$dbstate->query($checkquery);
var_dump($dbcheck);
我只为该var_dump获得bool(false)的输出。我在连接数据库后验证连接ID是不同的。
当我尝试检查第二个查询的结果时,我收到一条错误,说我正在调用非对象上的成员函数,因此它不能执行查询。如果我颠倒顺序,它将像预期的那样执行另一个查询。
我不知道这是否是PHP限制?我正在使用代码点火器,所以它也可能与之相关。我使用SQL Management Studio进行了测试,它可以在连接多次到master数据库的单独查询窗口中正常工作。我想要完成的是想出一种方法来运行第一个查询然后不做任何事情,直到我知道查询先完成。
更新
如果我通过禁用pconnect关闭持久数据库连接,它将使用相同的连接两次。
这是连接ID的输出,pconnect设置为false:
资源ID#52Resource id#52