我编写了SQL代码来创建在MySQL中创建视图。本地或我的计算机上的此代码可正常工作,但在远程服务器上运行时,它无法正常工作。
当我复制此代码并将PhpMyadmin的SQL位置粘贴到服务器上时,它的操作也没有任何问题。我没有更改代码的任何部分,只能从php复制然后在phpmyadmin中复制。
在这个不在服务器网页上工作的php事务后面发生了什么?
我的观点的全部内容:
$conn2 = new mysqli($servername, $username, $password,$dbname);
$view_baz1maz1="CREATE ALGORITHM=UNDEFINED DEFINER=`root`@ SQL SECURITY
DEFINER VIEW `baz1amz1` as select `regvezarat`.`bazemp`.`PrsID` AS `PrsID`,
`regvezarat`.`bazemp`.`Name` AS `Name`,`regvezarat`.`bazemp`.`Family` AS `Family`,
,`regvezarat`.`bazemp`.`AccID` AS `AccID` from `regvezarat`.`bazemp`
union select
`regvezarat`.`infemp`.`PrsID` AS `PrsID`,`regvezarat`.`infemp`.`Name` AS `Name`,
`regvezarat`.`infemp`.`Family` AS `Family`,`regvezarat`.`infemp`.`FtName` AS `FtName`,
regvezarat`.`infemp`.`NumID` AS `NumID`,`regvezarat`.`infemp`.`AccID` AS `AccID` from
`regvezarat`.`infemp`;";
if(mysqli_query($conn2,$view_baz1maz1) )
{
$num_win+=1;
}
else
{
mysqli_error($conn2);
$num_fail+=1;
echo "baz1amz1".'<br>';
}
所以我希望如果发生任何错误,在else块运行中的表彰和baz1amz1在页面上显示为我的指南。我想这个视图运行,但它没有在DB中提交,也许事务执行没有任何问题,最后当它想要在DB中提交时,没有足够的权限,从php到MySQL。 我在本地运行此代码没有任何错误和错误 如果可能的话?
答案 0 :(得分:0)
删除第一行的以下部分:
… ALGORITHM=UNDEFINED DEFINER=`root`@ SQL SECURITY DEFINER …
也就是说,声明应该简单地开始:
CREATE VIEW `baz1amz1` as select…
DEFINER=
的{{1}}和SQL SECURITY DEFINER
参数需要MySQL SUPER权限,并且不会影响此视图的行为。 (它们用于视图需要特殊权限的情况,这在这里似乎不是这种情况。)