2016-10-31 17 views
-1

カラムを削除する "php artisan migrate:rollback"を実行中にエラーが発生しました。マイグレーション時のエラー:カラムを削除するロールバック - Laravel Homestead&SQliteを使用

は、私はすでに走ってきました:
1.作曲が必要教義/ DBAL
2.作曲更新
私が使用してデータベーススキーマを確認すると、私も「作曲・ダンプ・自動ロード」

を試してみました3。 : "sqlite3 database/database.sqlite"テーブルには、すべての列が含まれています(抜け落ちるはずの "抜粋"を含む)が含まれますが、ロールバックを実行すると、列が公開されていないというエラーが表示されます。下記参照。

(環境:laravel 5.3-ステッド、Gitbash、崇高なテキスト3、sqlite3の)

次のようにエラーが次のよう

[Illuminate\Database\QueryException] 
SQLSTATE[HY000]: General error: 1 no such column: published (SQL: CREATE TEMPORARY TABLE __temp__articles AS SELECT id, title, body, created_at, updated_at, published at FROM articles) 

[Doctrine\DBAL\Driver\PDOException] 
SQLSTATE[HY000]: General error: 1 no such column: published 

[PDOException] 
SQLSTATE[HY000]: General error: 1 no such column: published 

私のスキーマは次のとおり

CREATE TABLE "migrations" ("id" integer not null primary key autoincrement, "migration" varchar not null, "batch" integer not null); 
CREATE TABLE "users" ("id" integer not null primary key autoincrement, "name" varchar not null, "email" varchar not null, "password" varchar not null, "remember_token" varchar null, "created_at" datetime null, "updated_at" datetime null); 
CREATE UNIQUE INDEX "users_email_unique" on "users" ("email"); 
CREATE TABLE "password_resets" ("email" varchar not null, "token" varchar not null, "created_at" datetime null); 
CREATE INDEX "password_resets_email_index" on "password_resets" ("email"); 
CREATE INDEX "password_resets_token_index" on "password_resets" ("token"); 
CREATE TABLE "articles" ("id" integer not null primary key autoincrement, "title" varchar not null, "body" text not null, "created_at" datetime null, "updated_at" datetime null, "published at" datetime not null, "excerpt" text null); 

列を作成した移行は次のとおりです。

<?php 

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

class AddExcerptToArticlesTable extends Migration 
{ 
/** 
* Run the migrations. 
* 
* @return void 
*/ 
public function up() 
{ 
    Schema::table('articles', function (Blueprint $table) { 

     $table->text("excerpt")->nullable(); 
    }); 
} 

/** 
* Reverse the migrations. 
* 
* @return void 
*/ 
public function down() 
{ 
    Schema::table('articles', function (Blueprint $table) { 

     $table->dropColumn("excerpt"); 

    }); 
} 
} 

これを解決して、migrate:rollbackを使用して列をシームレスに削除できるようにしますか?

答えて

0

ホームステイ仮想ボックス内で完璧に動作するmysqlデータベースを使用していました。ただ覚えている:「mysqlの-u屋敷-p」

  • を独自に作成します(それがマスクされていますLINE-次のパスワードの入力を求められたときに、「秘密」を入力します):家産ボックスに

    1. ログインデータベース: "create database your_database_name;"例えば

    とあなた.envファイルにデータベース名としてこれを設定し、:

    DB_CONNECTION=mysql              
    DB_HOST=127.0.0.1 
    DB_PORT=3306 
    DB_DATABASE=your_database_name 
    DB_USERNAME=homestead 
    DB_PASSWORD=secret 
    

    ああ。記事の移行を作成するときは、次のようにいくつかの変更を行います。

    $ table-> timestamp( "publishedat") - > nullable();

    //お知らせ私が定義されたタイムスタンプにNULL可能追加した、これは、移行作業は、そうしないと、PHPの職人は、私が削除した

    [Illuminate\Database\QueryException] 
    SQLSTATE[42000]: Syntax error or access violation: 1067 Invalid default value for 'publishedat' (SQL: create table `articles` (`id` int unsigned not null auto_increment primary key, `title` varchar(255) not null, `body` text not null, `created_at` timestamp null, `updated_at` timestamp null, `publishedat` timestamp not null) default character set utf8 collate utf8_unicode_ci) 
    

    //お知らせを移行実行する上で、次のエラーが発生しますようになります公表された空白は単に公表されたものだけである(published_atも代わりである)。これはあなたが寛容な段階になるときに悲しみのトンを節約します。Articleオブジェクトは単に保存しません。データベースにコミットされません。

    Git Bashを使用している場合は、データベーステーブルなどを表示するなどの便利なコマンドについては、https://gist.github.com/hofmannsven/9164408にお越しください。

  • 関連する問題