web-dev-qa-db-ja.com

Node.jsアプリケーションでKnex.jsを使用した移行を削除する

Node.jsアプリケーションでknexを機能させようとしています。私はチュートリアルに従っていて、ある時点でテーブルを作成しましたが、プロセスを繰り返すことができませんでした。テーブルを削除し、すべての移行フォルダーを削除しました。この時点で最初からやり直しましたが、新しい移行を作成してknex migrate:latestを実行した後、元の移行が欠落しているため、移行ディレクトリが破損しているというエラーが表示されます。

私は、ファイルが欠落している場合、それがそこにあったことを知らないはずだという印象を受けました。

プロジェクトから移行を削除する適切な方法は何ですか?

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

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:latest

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

しかし、私が削除したため、この移行は存在しません。

9
wuno

移行をロールバックする必要がありました(knex migrate:rollback)ファイルを削除する前に、私はあなたができることは次のとおりだと思います:

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

2
marman

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

私の開発環境はsqliteを使用していたので、ターミナルのrm -rf dev.sqlite3でこれを修正しました。

Postgresqlを使用すると、ターミナルではdropdb "db_name"になります。または、その他の選択肢については これを参照 になります。

これは簡単で、その後rollbackを実行する必要はありません。

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

1
ArchNoob

Herokuでpostgresqlを使用している場合は、データベースの資格情報に移動し、[データベースのリセット]ボタンをクリックすると機能します

0
user2584621

このコマンドを実行すると、データベースをリセットできます。

Heroku run pg:reset --confirm app-name
0
ashwood