Knex: اضبط MySQL sql_mode على اتصال تجمع knex

تم إنشاؤها على ١٨ أبريل ٢٠١٦  ·  3تعليقات  ·  مصدر: knex/knex

أهلا،

أرغب في تعيين sql_mode على NO_ENGINE_SUBSTITUTION لتجاوز الافتراضي strict mode في خادم MySQL v5.7.x

يمكن للمرء التحقق من متغير MySQL sql_mode خلال كتابة SHOW VARIABLES LIKE '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

كان الحل الحالي هو تعديل قسم mysqld في ملف /etc/mysql/my.cnf :
sql_mode='NO_ENGINE_SUBSTITUTION'

أود الاحتفاظ بها على مستوى تطبيق الويب بدلاً من مستوى خادم قاعدة البيانات. أي نصائح موضع تقدير.

شكرا!

question

التعليق الأكثر فائدة

مرحبًا @ rhys-vdw ،

أنا لا أعرف إذا كان هذا هو الطريقة الرسمية لتحقيق النتيجة المشار إليها أعلاه، ومع ذلك تجاوز على afterCreate وظيفة في pool قسم من إعدادات الاتصال لا حيلة لي. هذا هو المصدر:

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 ،

أنا لا أعرف إذا كان هذا هو الطريقة الرسمية لتحقيق النتيجة المشار إليها أعلاه، ومع ذلك تجاوز على afterCreate وظيفة في pool قسم من إعدادات الاتصال لا حيلة لي. هذا هو المصدر:

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 التقييمات