Table Doesn't Exist
The SQL query references a table that doesn't exist in the database.
Explanation
Table doesn't exist is a database error indicating that a SQL query references a table that hasn't been created in the current database. This commonly happens after database migrations haven't been run, when the wrong database is selected, when table names are misspelled, or after a table was dropped. In Laravel, this surfaces as a QueryException wrapping the underlying database error. The error typically includes the exact table name that was referenced.
Common Causes
- Migrations not run
- Wrong database selected
- Table name misspelled
- Table was dropped
- Table prefix mismatch
Solution
Run database migrations: php artisan migrate. Verify the correct database is selected in your .env configuration (DB_DATABASE). Check table name spelling in your queries and models. Use php artisan migrate:fresh to recreate all tables from scratch during development. Ensure the database user has access to the correct database. Check for table prefix configuration in config/database.php. For raw queries, verify the table exists: SHOW TABLES in MySQL or \dt in PostgreSQL.
Code Example
// This fails if the users table doesn't exist
$users = DB::table('users')->get();
// Fix: run migrations first
php artisan migrate
// Check if table exists
Schema::hasTable('users') // returns true/false
// Create table if not exists
if (!Schema::hasTable('users')) {
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamps();
});
}
// Check database name in .env
DB_DATABASE=myapp // make sure this matches!
// Raw query to list tables
// MySQL: SHOW TABLES;
// PostgreSQL: \dt
// SQLite: .tables
Error Information
Language
php
Framework
laravel
Difficulty
Beginner
Views
14
Related Errors
DevOps
Laravel Schedule Task Failure
A scheduled task failed to execute or completed with errors.
ECONNREFUSED
Database
ECONNREFUSED
The network connection was refused by the target server.
Laravel
Laravel Missing Application Encryption Key
The APP_KEY is not set or is invalid, preventing encryption operations.
Laravel
SerializationException
Failed to serialize or unserialize data for caching, queues, or sessions.