Привет,
Я хотел бы установить sql_mode
на NO_ENGINE_SUBSTITUTION
, чтобы обойти значение по умолчанию strict mode
на сервере MySQL v5.7.x
Можно проверить переменную MySQL sql_mode
набрав SHOW VARIABLES LIKE 'sql_mode';
клиентской консоли MySQL.
NO_ENGINE_SUBSTITUTION
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'
Я бы хотел, чтобы это было на уровне веб-приложений, а не на уровне сервера БД. Любые советы приветствуются.
Спасибо!
Привет @ 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 , я не ответил, потому что понятия не имел, в чем состоит решение. Интересно, стоит ли добавить что-нибудь об этом обратном вызове в FAQ?
Обратный звонок задокументирован, закрытие
Самый полезный комментарий
Привет @ rhys-vdw,
Я не знаю, является ли это официальным способом достижения вышеупомянутого результата, тем не менее, переопределение функции
afterCreate
в разделеpool
в настройках подключения помогает мне. Вот источник:С наилучшими пожеланиями,
Лука