Knex: knexプール接続でMySQLsql_modeを設定します

作成日 2016年04月18日  ·  3コメント  ·  ソース: knex/knex

こんにちは、

MySQLサーバーv5.7.xのデフォルトのstrict modeをバイパスするために、 sql_modeNO_ENGINE_SUBSTITUTIONに設定したいと思います。

MySQLクライアントコンソールからSHOW VARIABLES LIKE 'sql_mode';入力すると、 sql_mode MySQL変数を確認できます。

  • MySQLサーバーv5.6.xのデフォルト
    NO_ENGINE_SUBSTITUTION
  • MySQLサーバーv5.7.xのデフォルト
    ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

私の現在の回避策は、 / etc / mysql /my.cnfファイルのmysqldセクションを変更することでした
sql_mode='NO_ENGINE_SUBSTITUTION'

ただし、DBサーバーレベルではなく、Webアプリケーションレベルで維持したいと思います。 アドバイスをいただければ幸いです。

ありがとう!

question

最も参考になるコメント

こんにちは@ rhys-vdw、

上記の結果を達成するための公式の方法かどうかはわかりませんが、接続設定のpoolセクションでafterCreate関数をオーバーライドすることでうまくいきます。 ソースは次のとおりです。

dbase: {
          client: 'mysql',
          connection: {
            socketPath: '/var/run/mysqld/mysqld.sock',
            database : 'db_name',
            user: 'db_username',
            password : 'db_password',
            timezone: 'UTC',
            charset: 'utf8mb4_unicode_ci',
            supportBigNumbers:true
          },
          pool: {
            min: 2,
            max: 10,
            afterCreate: function(conn, cb) {
              conn.query('SET sql_mode="NO_ENGINE_SUBSTITUTION";', function (err) {
                cb(err, conn);
              });
            }
          }
        }

宜しくお願いします、
ルカ

全てのコメント3件

こんにちは@ rhys-vdw、

上記の結果を達成するための公式の方法かどうかはわかりませんが、接続設定のpoolセクションでafterCreate関数をオーバーライドすることでうまくいきます。 ソースは次のとおりです。

dbase: {
          client: 'mysql',
          connection: {
            socketPath: '/var/run/mysqld/mysqld.sock',
            database : 'db_name',
            user: 'db_username',
            password : 'db_password',
            timezone: 'UTC',
            charset: 'utf8mb4_unicode_ci',
            supportBigNumbers:true
          },
          pool: {
            min: 2,
            max: 10,
            afterCreate: function(conn, cb) {
              conn.query('SET sql_mode="NO_ENGINE_SUBSTITUTION";', function (err) {
                cb(err, conn);
              });
            }
          }
        }

宜しくお願いします、
ルカ

@lanceschiに感謝します。解決策がわからなかったため、

コールバックが文書化され、終了

このページは役に立ちましたか?
0 / 5 - 0 評価

関連する問題

olaferlandsen picture olaferlandsen  ·  3コメント

fsebbah picture fsebbah  ·  3コメント

mtom55 picture mtom55  ·  3コメント

tjwebb picture tjwebb  ·  3コメント

legomind picture legomind  ·  3コメント