🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #308978

Wznawianie zapisu do bazy po wyjątku do skutku

#308978
From: Borneq
Date: Sun, 15 Jan 2017 14:25
35 lines
1918 bytes
...lub przez max ilość prób w pętli.
Otóż,
Mam klasę dostępu do bazy MySQL.
Jest tam metoda:
void MySqlDB::execute(string statement)
{
	sql::SQLString sql_statement(statement.c_str());
     try {
         stmt->execute(sql_statement);
     }
     catch (sql::SQLException &e) {
		if (e.getErrorCode() != 1062) //duplicate entry
		{
			PRINTF ("# ERR: SQLException in %s"
					"(%s) on line %d\n"
					"# ERR: %s"
					" (MySQL error code: %d"
					", SQLState: %s )\n"
			        "%s \n"
			, __FILE__, __FUNCTION__, __LINE__, e.what(), e.getErrorCode(), 
e.getSQLState(), statement.c_str());
			auto code = e.getErrorCode();
			if(code == MySqlError::DEADLOCK_ERR || code == MySqlError::LOCKWAIT_ERR)
			{
                 PRINTF("Retry transaction\n");
                 execute(statement);
             }
		}
     }
}

Tutaj w przypadku błędów DEADLOCK_ERR czy LOCKWAIT_ERR spróbuje drugi 
raz, ale drugi raz już bez try-catch.
Jakiej składni użyć by móc to robić w pętli dowolną liczbę razy 
ograniczoną np. przez maxTrials=10 ?
Technical Details
Message-ID: <o5g0nv$5kb$1@node2.news.atman.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail
From: Borneq <borneq@antyspam.hidden.pl>
Newsgroups: pl.comp.lang.c
Subject: Wznawianie zapisu do bazy po wyjątku do skutku
Date: Sun, 15 Jan 2017 15:25:07 +0100
Organization: ATMAN - ATM S.A.
Lines: 35
Message-ID: <o5g0nv$5kb$1@node2.news.atman.pl>
NNTP-Posting-Host: 91.239.205.105
Mime-Version: 1.0
X-Trace: node2.news.atman.pl 1484490303 5771 91.239.205.105 (15 Jan 2017 14:25:03 GMT)
X-Complaints-To: usenet@atman.pl
NNTP-Posting-Date: Sun, 15 Jan 2017 14:25:03 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0
X-Mozilla-News-Host: news://news.atman.pl:119
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit