Laravel 5.3 migration doesn't create tables

2019-07-07 01:24发布

问题:

I created some migrations using the command php artisan migrate:make and then filled it and saved it with some fields. This is a fresh installation and the first migration to run.

I ran php artisan migrate and the migration completed successfully. However, while the migrations table IS created, and it has a single row with the filename and batch 1, there is no table.

Here's my migration file code:

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateFuelLocationsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        //
        Schema::create('fuel_locations', function (Blueprint $table) {
            $table->increments('id');
            $table->string('uid');
            $table->string('name');
            $table->string('fuel_type');
            $table->string('email');
            $table->string('street');
            $table->string('city');
            $table->string('state');
            $table->string('zip');
            $table->string('phone');
            $table->string('service_hours');
            $table->string('payment_methods');
            $table->string('payment_method_other');
            $table->decimal('latitude', 3, 7);
            $table->decimal('longitude', 3, 7);
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        //
        Schema::dropIfExists('fuel_locations');
    }
}

And a few lines from my config/database.php:

    'mysql' => [
        'driver' => 'mysql',
        'database' => 'mydb',
        'host' => 'localhost',
        'username' => 'root',
        'password' => '',
        'charset'   => env('DB_CHARSET', 'utf8'),
        'collation' => env('DB_COLLATION', 'utf8_unicode_ci'),
        'prefix'    => env('DB_PREFIX', ''),
        'timezone'  => env('DB_TIMEZONE', '+00:00'),
        'strict'    => env('DB_STRICT_MODE', false),
    ],

I did try changing the host to 127.0.0.1 but that wouldn't connect. How can I fix it so that it does create the table like it's supposed to.

回答1:

The problem is with the following lines:

$table->decimal('latitude', 3, 7);
$table->decimal('longitude', 3, 7);

You should be getting an exception similar to the following

[PDOException] SQLSTATE[42000]: Syntax error or access violation: 1427 For float(M,D), double(M,D) or decimal(M,D), M must be >= D (column 'latitude').

when you do the migration.

Change to the following

$table->decimal('latitude', 10, 7);
$table->decimal('longitude', 10, 7);

and it should work.

Numeric precision refers to the maximum number of digits that are present in the number



回答2:

If you don't get any errors, try to run composer dumpauto to register migration and then run php artisan migrate to run the migration.