8.1.1 Предупреждения при обработке
Аналогично выполнению отдельных инструкций, коммитирование или откат транзакции также может вызывать предупреждения. Для обработки этих предупреждений необходимо проверить объект результата ответа от Session.commit(); или Session.rollback();.
Это показано в следующем примере. Пример предполагает, что схема теста существует, и что коллекция my_collection не существует.
var mysqlx = require('mysqlx');
// Connect to server
var mySession = mysqlx.getSession( {
host: 'localhost', port: 33060,
user: 'user', password: 'password' } );
// Get the Schema test
var myDb = mySession.getSchema('test');
// Create a new collection
var myColl = myDb.createCollection('my_collection');
// Start a transaction
mySession.startTransaction();
try
{
myColl.add({'name': 'Rohit', 'age': 18, 'height': 1.76}).execute();
myColl.add({'name': 'Misaki', 'age': 24, 'height': 1.65}).execute();
myColl.add({'name': 'Leon', 'age': 39, 'height': 1.9}).execute();
// Commit the transaction if everything went well
var reply = mySession.commit();
// handle warnings
if (reply.warningCount){
var warnings = reply.getWarnings();
for (index in warnings){
var warning = warnings[index];
print ('Type ['+ warning.level + '] (Code ' + warning.code + '): ' + warning.message + '\n');
}
}
print ('Data inserted successfully.');
}
catch(err)
{
// Rollback the transaction in case of an error
reply = mySession.rollback();
// handle warnings
if (reply.warningCount){
var warnings = reply.getWarnings();
for (index in warnings){
var warning = warnings[index];
print ('Type ['+ warning.level + '] (Code ' + warning.code + '): ' + warning.message + '\n');
}
}
// Printing the error message
print ('Data could not be inserted: ' + err.message);
}
По умолчанию все предупреждения отправляются сервером клиенту. Если известно, что операция генерирует много предупреждений, и предупреждения не представляют ценности для приложения, то отправка предупреждений может быть подавлена. Это помогает экономить пропускную способность. session.setFetchWarnings() управляет тем, отбрасываются ли предупреждения на сервере или отправляются клиенту. session.getFetchWarnings() используется для получения текущих настроек.
var mysqlx = require('mysqlx');
function process_warnings(result){
if (result.getWarningCount()){
var warnings = result.getWarnings();
for (index in warnings){
var warning = warnings[index];
print ('Type ['+ warning.level + '] (Code ' + warning.code + '): ' + warning.message + '\n');
}
}
else{
print ("No warnings were returned.\n");
}
}
// Connect to server
var mySession = mysqlx.getSession( {
host: 'localhost', port: 33060,
user: 'user', password: 'password' } );
// Disables warning generation
mySession.setFetchWarnings(false);
var result = mySession.sql('drop schema if exists unexisting').execute();
process_warnings(result);
// Enables warning generation
mySession.setFetchWarnings(true);
var result = mySession.sql('drop schema if exists unexisting').execute();
process_warnings(result);
© 2025 Oracle
Licensed under the GPLv2 License.