February 20, 2021 —John Koster
While working on a recent Statamic 3 project, I had the requirement to switch to the database eloquent driver to store Statamic users. The Storing Users in a Database knowledge base article was great to get the configuration changes done, and the base database tables created. However, after doing some testing I noticed that the project was triggering the following errors:
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'database.password_activations' doesn't exist at
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'database.password_resets' doesn't exist at
If you are also receiving these errors after migrating your Statamic 3 users to the database, you can follow the remaining steps to get things up and running smoothly again.
From the root of your Statamic 3 project, run the following Artisan command:
1php artisan make:migration create_password_activations_table
Once this has completed, locate a new file that ends with _create_password_activations_table.php
within your projects database/migrations/
folder and set the contents to:
1<?php 2 3use Illuminate\Database\Migrations\Migration; 4use Illuminate\Database\Schema\Blueprint; 5use Illuminate\Support\Facades\Schema; 6 7class CreatePasswordActivationsTable extends Migration 8{ 9 10 /**11 * Run the migrations.12 *13 * @return void14 */15 public function up()16 {17 Schema::create('password_activations', function (Blueprint $table) {18 $table->string('email')->index();19 $table->string('token')->index();20 $table->timestamp('created_at');21 });22 }23 24 /**25 * Reverse the migrations.26 *27 * @return void28 */29 public function down()30 {31 Schema::drop('password_activations');32 }33 34}
We will perform steps similar to the password_activations
table to create our password_resets
table. From the root of your Statamic 3 project, run the following Artisan command:
1php artisan make:migration create_password_resets_table
Once this has completed, locate a new file that ends with _create_password_resets_table.php
within your projects database/migrations/
folder and set the contents to:
1<?php 2 3use Illuminate\Database\Migrations\Migration; 4use Illuminate\Database\Schema\Blueprint; 5use Illuminate\Support\Facades\Schema; 6 7class CreatePasswordResetsTable extends Migration 8{ 9 10 /**11 * Run the migrations.12 *13 * @return void14 */15 public function up()16 {17 Schema::create('password_resets', function (Blueprint $table) {18 $table->string('email')->index();19 $table->string('token')->index();20 $table->timestamp('created_at');21 });22 }23 24 /**25 * Reverse the migrations.26 *27 * @return void28 */29 public function down()30 {31 Schema::drop('password_resets');32 }33}
Once the previous two steps have been completed, run the following Artisan command to generate your new database tables:
1php artisan migrate
In this article, we looked at a solution to a common problem when using databases to store Statamic 3 users. The solution was to simply create the two required tables that Statamic is looking for when sending new account activation emails, or password reset emails.
∎
The following amazing people help support this site and my open source projects ♥️
If you're interesting in supporting my work and want to show up on this list, check out my GitHub Sponsors Profile.