Eloquent innodb - SQLSTATE[42S02]:找不到基表或视图 表不存在



我遇到了这种奇怪的崩溃,并尝试了几个小时来解决但没有成功,检查互联网上的任何地方都没有找到解决方案。

我正在运行雄辩(没有拉拉维尔)。我有两台服务器(前端和后端)。数据库位于后端服务器中。

我正在运行完全相同的代码,使用两台服务器的 laravel 连接到数据库。从后端服务器一切正常。在前端服务器中,我得到的结果好坏参半。共 9 张表:

  1. 三个作品,我能够检索数据。
  2. 三个返回 [项目:受保护] => 数组 (),而表包含要返回的数据。
  3. 三个导致致命错误 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 变量。