2016-11-11 35 views
3

node.jsアプリケーションでknexを動作させようとしています。私はチュートリアルに従っていましたが、ある時点でテーブルを作成しましたが、そのプロセスを繰り返すことはできませんでした。私はテーブルを削除し、すべての移行フォルダを削除しました。この時点で、私は新しいマイグレーションを作成して実行した後に開始しましたknex migrate:latest元のマイグレーションが存在しないため、マイグレーションディレクトリーが壊れているというエラーが表示されます。私のNode.jsアプリケーションでKnex.jsを使ってマイグレーションを取り除く

私は、ファイルが見つからない場合、それがそこにあったことを知らないという印象を受けました。

マイグレーションをプロジェクトから削除する適切な方法は何ですか?

knexfile.js

development: { 
    client: 'pg', 
    connection: { 
    host: '127.0.0.1', 
    user:  'postgres', 
    password: 'password', 
    database: 'myDatabase' 
    }, 
    pool: { 
     min: 10, 
     max: 20 
    }, 
    migrations: { 
     directory: __dirname + '/db/migrations' 
    }, 
    seeds: { 
     directory: __dirname + '/db/seeds/development' 
    } 

db.jsこれは、エラーを与える

knex migrate:latest 

Using environment: development 
Error: The migration directory is corrupt, the following files are missing: 20161110130954_auth_level.js 

が、私はそれを削除したため、この移行が存在しない実行

var config  = require('../knexfile.js'); 
var env   = 'development'; 
var knex  = require('knex')(config[env]); 

module.exports = knex; 
console.log('Getting knex'); 
knex.migrate.latest([config]); 
console.log('Applying migration...'); 

。あなたは私はあなたが何ができるかを推測する、ファイルを削除する前に、移行(knex migrate:rollback)をロールバックする必要がありました

答えて

0

は次のとおりです。

ここ

touch [full_path_to_migrations_here]/migrations/20161110130954_auth_level.js

knex migrate:rollback

rm [full_path_to_migrations_here]/migrations/20161110130954_auth_level.js

リファレンス https://github.com/tgriesser/knex/issues/1569

+1

マイグレーションを削除するには、データベースに入り、マイグレーションに関連する行を削除してから、関連するjsファイルを削除してしまいました。 – wuno

0

シードと移行ファイルを使用して開発中であるため、テーブルとデータを再作成することができます。使用可能なKnex移行を使用してデータベースを削除して再作成できます。

私の開発環境ではsqliteを使用していたので、端末でrm -rf dev.sqlite3を修正しました。

postgresqlでは、端末にはdropdb "db_name"、その他の代替方法にはsee thisとなります。

これは単純なので、その後ロールバックを実行する必要はありません。

古い移行に関する記録がなくなり、新しいknex migrate:latestで再作成できます。

関連する問題