Knex: knex ํ’€ ์—ฐ๊ฒฐ์—์„œ MySQL sql_mode ์„ค์ •

์— ๋งŒ๋“  2016๋…„ 04์›” 18์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: knex/knex

์•ˆ๋…•ํ•˜์„ธ์š”,

MySQL ์„œ๋ฒ„ v5.7.x์—์„œ ๊ธฐ๋ณธ strict mode ๋ฅผ ์šฐํšŒํ•˜๊ธฐ ์œ„ํ•ด sql_mode ์„ NO_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 ์„œ๋ฒ„ ์ˆ˜์ค€์ด ์•„๋‹Œ ์›น ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์ˆ˜์ค€์—์„œ ์œ ์ง€ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์กฐ์–ธ์„ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๊ฐ์‚ฌ!

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 ๋“ฑ๊ธ‰