Reputation: 548
First I rolled back 2 migrations by mistake, then I ran php artisan migrate
command and I got the following error:
[Illuminate\Database\QueryException]
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'exercise1.categories' doesn't exist (SQL: select * from
categories
where parent_id
= 0)
[PDOException]
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'exercise1.categories' doesn't exist
Then I stopped Laravel. After that when I run the php artisan serve
command for starting Laravel I get the same error.
Here are 2 migrations which I've rolled back:
1.
class CreateCategoriesTable extends Migration
{
public function up()
{
Schema::create('categories',function (Blueprint $table){
$table->increments('id');
$table->string('name');
$table->text('parent_id');
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('categories');
}
}
2.
class CreateArticlesTable extends Migration
{
public function up()
{
Schema::create('articles', function (Blueprint $table) {
$table->increments('id');
$table->string('title')->nullable(false);
$table->longText('article')->nullable(false);
$table->integer('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('articles');
}
}
Please help me to solve this frustrating problem. All answers are highly appreciated, thanks in advance.
Upvotes: 12
Views: 12957
Reputation: 1
Check your log file. Check if there are any unusual places where you made a database query. For example, in my case, I called User::all() in my routes file, which caused an error. Uncomment that part and see if everything works.
Upvotes: 0
Reputation: 2109
The problem in my case was that the boot functions in several app/Providers/*Provider.php files were being executed when running
php artisan migrate
You can comment these out as noted elsewhere but another robust option is to add a conditional
public function boot()
{
if (env('SKIP_BOOTERS')) {
return;
}
// Access DB...
}
And then run the migration with the env var set
SKIP_BOOTERS=true php artisan migrate
This allows the code to be checked in and the CI to run with the patched code
Upvotes: 0
Reputation: 1
I also had the same problem. I fixed it, by deleting the database first, then I imported the previous database manually.
And fortunately at that time I still had the previous database backup.
Maybe if you don't have a previous database backup, You can copy all database migrations to a new laravel project, then run 'php artisan migrate' to get the same database as the previous database,
Upvotes: 0
Reputation: 151
For me, this error was occurring because of a scheduled task in laravel that involved a database lookup. By commenting out that lookup in laravel/app/Console/Kernel.php
from my scheduled task, I was able to migrate my database again.
Upvotes: 3
Reputation: 548
If you encounter with this problem and if it's not caused by migration files then most probably it happens because of 2 possible reasons.
Since ServiceProviders' boot functions and autoloaded custom helper functions are loaded first when laravel is started all the php artisan
commands will generate "Base table or view not found" error.
At this point what you should do is comment out those queries that are querying nonexistent tables and run php artisan serve
then run php artisan migrate
. Then uncomment those lines, save it and everything should work fine.
As @devk suggested it's better to check laravel log files which points exactly to where the problem happens. It led me to find a solution. For this don't forget to Turn on debug mode.
Upvotes: 33
Reputation: 331
This may happen due to any of the following problems:
Upvotes: 0
Reputation: 163748
When you've rolled back these migrations, you've deleted categories
and articles
tables. So just run migrate
command again:
php artisan migrate
Upvotes: 3