我遇到了这种奇怪的崩溃,并尝试了几个小时来解决但没有成功,检查互联网上的任何地方都没有找到解决方案。
我正在运行雄辩(没有拉拉维尔)。我有两台服务器(前端和后端)。数据库位于后端服务器中。
我正在运行完全相同的代码,使用两台服务器的 laravel 连接到数据库。从后端服务器一切正常。在前端服务器中,我得到的结果好坏参半。共 9 张表:
- 三个作品,我能够检索数据。
- 三个返回 [项目:受保护] => 数组 (),而表包含要返回的数据。
- 三个导致致命错误 SQLSTATE[42S02]:找不到基表或视图 表不存在
从#1我了解这与数据库用户/密码问题无关。
对于#2,我使用getQueryLog()检查了查询,并在phpmyadmin中运行查询,它们有效。
从我到目前为止的观察来看,所有导致#3的表都是InnoDB。为什么我的其他桌子是MyIsam我不知道。
并且完全相同的代码在后端服务器中工作,因此表名是单数或其他一些与代码相关的问题不是问题。
后端服务器是PHP 5.5.9,雄辩的5.4.45
前端服务器是 PHP 5.6.32,雄辩的 5.4.36
知道如何处理#2(返回数据为空)和#3(php致命错误)吗?
好的,发现了这个疯狂的错误。 首先,我发现我们在前端服务器上有一个旧版本的数据库。它不应该在那里,所以我甚至没有考虑过它是一种可能性。
此外,代码中存在一个问题:
$dbhost = __MYSQLDB_HOST__;
$dbuser = 'xxxxx';
$dbpass = 'xxxxx';
$dbname = 'xxxxx';
$capsule = new Capsule;
$capsule->addConnection(array(
'driver' => 'mysql',
'host' => 'localhost', // <= this is the problem!!!
'database' => $dbname,
'username' => $dbuser,
'password' => $dbpass,
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => ''
));
如您所见,当连接到数据库时,它使用 localhost 而不是包含后端服务器上远程数据库主机的 $dbhost 变量。