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.
∎
John Koster
Dive deep into Antlers, the templating langauge used by Statamic, an elegant and powerful CMS.
Published on December 7, 2016
Published on November 18, 2016
Published on April 15, 2018