2017-05-28 11 views
1

MySQLとKnexでデータベースを移行しようとしています。エラー:ユーザー '' @ 'localhost'(パスワード:NOを使用)のアクセスが拒否されました

私はコマンドknex migrate:latestを実行すると、私が何を最も私を混乱することですが、私は、(「123」と「NO」に)コードベースにパスワードを追加しようとしました

ER_ACCESS_DENIED_ERROR: Access denied for user ''@'localhost' (using password: NO)

を取得私は私のデータベースファイルにuser: "root"を持っていたとしても、エラーがユーザーとして空の文字列を与える...

私は私が想像するものを共有関連のファイルです:

// mysql_db.js

const knex = require('knex')({ 
    client: 'mysql', 
    connection: { 
    host: 'localhost', 
    user: 'root', 
    password: '', 
    database: 'SQL_Data', 
    }, 
}); 

module.exports = knex; 

//は

const path = require('path'); 

module.exports = { 
    development: { 
     client: 'mysql', 
     connection: { 
     filename: '/server/SQL/mysql_db', 
    }, 
    migrations: { 
     directory: path.join(__dirname, '/server/SQL/migrations'), 
    }, 
    seeds: { 
     directory: path.join(__dirname, '/server/SQL/seeds'), 
    }, 
    }, 
}; 

//knex.js

const environment = proces.env.NODE_ENV || 'development'; 
const config = require('../../knexfile.js')[environment]; 
module.exports = require(knex)('config'); 

// "移行定義" エラーメッセージとして

exports.up = (knex, Promise) => knex.schema.createTable('sql_table', ((table) => { 
    table.increments(); 
    table.string('name').notNullable(); 
    table.string('email').notNullable(); 
    table.string('description').notNullable(); 
    table.string('url').otNullable(); 
})); 

exports.down = (knex, Promise) => knex.schema.dropTable('sql_table'); 
+0

http://perkframework.com/v1/guides/database:あなたのmysql_dbで

const path = require('path'); module.exports = { development: { client: 'mysql', connection: { host: 'localhost', user: 'root', password: '', database: 'SQL_Data', }, migrations: { directory: path.join(__dirname, '/server/SQL/migrations'), }, seeds: { directory: path.join(__dirname, '/server/SQL/seeds'), }, }, }; 

あなたは同じ設定を使用することができ へのinit knexにこのような何かをしたいかもしれません-migrations-knex.html – Hackerman

答えて

1

はあなたが言うknexfile.js名前が空の文字列である無効な資格情報のユーザーでログインしようとしていませんDB内のt。

これは設定が間違っていることを意味します。あなたは単純に間違っている初期化knexインスタンスをエクスポートし、他のファイルを参照するようにしようと、あなたのノード-mysqlのドライバの設定、でいくつかの奇妙なセグメント、

client: 'mysql', 
    connection: { 
    filename: '/server/SQL/mysql_db' 
    } 

を持っています。 knexfileの正しい書式は、knexfileが環境変数NODE_ENVに従ってプロファイルを選択することをサポートしている点を除いて、knexインスタンスの作成に使用されているものとほとんど同じです。

const knex = require('knex')(
    require('knexfile')[process.env.NODE_ENV || 'development'] 
); 
+0

完璧な、それを修正しました! 'knex init'を実行すると、形式の例として' knexfile.js'についてくるコード構造が、接続キーのオブジェクトの中でファイル名のキーを要求するので、私はそうしました。 – jaimefps

関連する問題