Laravel php artisan 空数据库迁移错误
Laravel php artisan migrate errors on empty database
奇怪的事情正在发生。一直在尝试使用 php artisan migrate
进行 运行 迁移,但出现以下关于缺少 table 的错误(应该由迁移创建和填充)。
PHP Fatal error: Uncaught PDOException: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'app.portals' doesn't exist in /home/daniel/Programming/app/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:80
Stack trace:
#0 /home/daniel/Programming/app/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php(80): PDO->prepare('select * from `...', Array)
#1 /home/daniel/Programming/app/vendor/laravel/framework/src/Illuminate/Database/Connection.php(326): Doctrine\DBAL\Driver\PDOConnection->prepare('select * from `...')
#2 /home/daniel/Programming/app/vendor/laravel/framework/src/Illuminate/Database/Connection.php(657): Illuminate\Database\Connection->Illuminate\Database\{closure}('select * from `...', Array)
#3 /home/daniel/Programming/app/vendor/laravel/framework/src/Illuminate/Database/Connection.php(624): Illuminate\Database\Connection->runQueryCallback('select * from `...', Array, Object(Closure))
#4 /home/daniel/Programming/app/vendor/laravel in /home/daniel/Programming/app/vendor/laravel/framework/src/Illuminate/Database/Connection.php on line 664
PHP Fatal error: Uncaught PDOException: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'app.portals' doesn't exist in /home/daniel/Programming/app/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:80
Stack trace:
#0 /home/daniel/Programming/app/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php(80): PDO->prepare('select * from `...', Array)
#1 /home/daniel/Programming/app/vendor/laravel/framework/src/Illuminate/Database/Connection.php(326): Doctrine\DBAL\Driver\PDOConnection->prepare('select * from `...')
#2 /home/daniel/Programming/app/vendor/laravel/framework/src/Illuminate/Database/Connection.php(657): Illuminate\Database\Connection->Illuminate\Database\{closure}('select * from `...', Array)
#3 /home/daniel/Programming/app/vendor/laravel/framework/src/Illuminate/Database/Connection.php(624): Illuminate\Database\Connection->runQueryCallback('select * from `...', Array, Object(Closure))
#4 /home/daniel/Programming/app/vendor/laravel in /home/daniel/Programming/app/vendor/laravel/framework/src/Illuminate/Database/Connection.php on line 664
Laravel版本:5.5.*
PHP版本:7.1
背景故事:
我决定安装一个新的本地数据库,而不是总是依赖远程数据库。然后我发现 artisan 不再起作用了。
尝试次数:
每个 artisan 命令我都能得到,但其中 none 有效,因为即使 php artisan --help
也会抛出上面的错误...
我也尝试克隆 repo 作为一个新的开始,然后检查我正在处理的分支,并且 运行ning php artisan migrate
出现同样的错误。
迁移:
我不能 post 所有这些,但是有一个迁移可以构建缺失的 table:
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreatePortalLinks extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('portal_viewer_user', function (Blueprint $table) {
$table->integer('viewer_user_id');
$table->integer('portal_id');
});
Schema::create('admin_user_portal', function (Blueprint $table) {
$table->integer('admin_user_id');
$table->integer('portal_id');
});
Schema::create('portals', function (Blueprint $table) {
$table->increments('id');
$table->string('identifier');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('viewer_user_portal');
Schema::dropIfExists('portal_admins');
Schema::dropIfExists('portals');
}
}
您正在尝试刷新。
你应该试试 php artisan migrate:fresh
向下命令将不起作用,因为没有可删除的内容。
当您 运行 刷新命令 laravel 将首先尝试使用向下 functions.then 回滚所有内容,它将重建所有内容。在服务器上你从来没有遇到过问题,因为那些表在那里。但是在新安装中,整个过程无法回滚。没有什么可以回滚。
错误原因:
错误是由 Laravel 服务提供者在其构造函数中有数据库查询引起的。
事实证明 - 我不知道这一点 - Laravel 服务提供者在 运行 artisan 时被实例化。
解决方案:
一旦我在我的服务提供商中进行了一些验证以阻止查询发生在 artisan 命令上,运行 php artisan migrate:install
、php artisan migrate:fresh
和 php artisan migrate --seed
由数据库填充包含所有必要的表格和记录。
奇怪的事情正在发生。一直在尝试使用 php artisan migrate
进行 运行 迁移,但出现以下关于缺少 table 的错误(应该由迁移创建和填充)。
PHP Fatal error: Uncaught PDOException: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'app.portals' doesn't exist in /home/daniel/Programming/app/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:80
Stack trace:
#0 /home/daniel/Programming/app/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php(80): PDO->prepare('select * from `...', Array)
#1 /home/daniel/Programming/app/vendor/laravel/framework/src/Illuminate/Database/Connection.php(326): Doctrine\DBAL\Driver\PDOConnection->prepare('select * from `...')
#2 /home/daniel/Programming/app/vendor/laravel/framework/src/Illuminate/Database/Connection.php(657): Illuminate\Database\Connection->Illuminate\Database\{closure}('select * from `...', Array)
#3 /home/daniel/Programming/app/vendor/laravel/framework/src/Illuminate/Database/Connection.php(624): Illuminate\Database\Connection->runQueryCallback('select * from `...', Array, Object(Closure))
#4 /home/daniel/Programming/app/vendor/laravel in /home/daniel/Programming/app/vendor/laravel/framework/src/Illuminate/Database/Connection.php on line 664
PHP Fatal error: Uncaught PDOException: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'app.portals' doesn't exist in /home/daniel/Programming/app/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:80
Stack trace:
#0 /home/daniel/Programming/app/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php(80): PDO->prepare('select * from `...', Array)
#1 /home/daniel/Programming/app/vendor/laravel/framework/src/Illuminate/Database/Connection.php(326): Doctrine\DBAL\Driver\PDOConnection->prepare('select * from `...')
#2 /home/daniel/Programming/app/vendor/laravel/framework/src/Illuminate/Database/Connection.php(657): Illuminate\Database\Connection->Illuminate\Database\{closure}('select * from `...', Array)
#3 /home/daniel/Programming/app/vendor/laravel/framework/src/Illuminate/Database/Connection.php(624): Illuminate\Database\Connection->runQueryCallback('select * from `...', Array, Object(Closure))
#4 /home/daniel/Programming/app/vendor/laravel in /home/daniel/Programming/app/vendor/laravel/framework/src/Illuminate/Database/Connection.php on line 664
Laravel版本:5.5.*
PHP版本:7.1
背景故事:
我决定安装一个新的本地数据库,而不是总是依赖远程数据库。然后我发现 artisan 不再起作用了。
尝试次数:
每个 artisan 命令我都能得到,但其中 none 有效,因为即使 php artisan --help
也会抛出上面的错误...
我也尝试克隆 repo 作为一个新的开始,然后检查我正在处理的分支,并且 运行ning php artisan migrate
出现同样的错误。
迁移:
我不能 post 所有这些,但是有一个迁移可以构建缺失的 table:
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreatePortalLinks extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('portal_viewer_user', function (Blueprint $table) {
$table->integer('viewer_user_id');
$table->integer('portal_id');
});
Schema::create('admin_user_portal', function (Blueprint $table) {
$table->integer('admin_user_id');
$table->integer('portal_id');
});
Schema::create('portals', function (Blueprint $table) {
$table->increments('id');
$table->string('identifier');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('viewer_user_portal');
Schema::dropIfExists('portal_admins');
Schema::dropIfExists('portals');
}
}
您正在尝试刷新。
你应该试试 php artisan migrate:fresh
向下命令将不起作用,因为没有可删除的内容。
当您 运行 刷新命令 laravel 将首先尝试使用向下 functions.then 回滚所有内容,它将重建所有内容。在服务器上你从来没有遇到过问题,因为那些表在那里。但是在新安装中,整个过程无法回滚。没有什么可以回滚。
错误原因:
错误是由 Laravel 服务提供者在其构造函数中有数据库查询引起的。
事实证明 - 我不知道这一点 - Laravel 服务提供者在 运行 artisan 时被实例化。
解决方案:
一旦我在我的服务提供商中进行了一些验证以阻止查询发生在 artisan 命令上,运行 php artisan migrate:install
、php artisan migrate:fresh
和 php artisan migrate --seed
由数据库填充包含所有必要的表格和记录。