diff --git a/src/lua/mysql.cc b/src/lua/mysql.cc
index 7e5cf8725806e1d85e5de1be74f730e48eb44169..64c63bc021178c850fecd5a9babbae5e3fe2bbff 100644
--- a/src/lua/mysql.cc
+++ b/src/lua/mysql.cc
@@ -380,9 +380,12 @@ lbox_net_mysql_connect(struct lua_State *L)
 	}
 
 	if (*mysql_error(mysql)) {
-		const char *estr = mysql_error(mysql);
+		luaL_Buffer b;
+		luaL_buffinit(L, &b);
+		luaL_addstring(&b, mysql_error(mysql));
+		luaL_pushresult(&b);
 		mysql_close(mysql);
-		luaL_error(L, "%s", estr);
+		lua_error(L);
 	}
 
 	lua_pushstring(L, "raw");
diff --git a/src/lua/pg.cc b/src/lua/pg.cc
index 86e286789722c9ec343c8c70691d4d002c8fdadf..940cf75b7c041614858db78879063b9a3388fbba 100644
--- a/src/lua/pg.cc
+++ b/src/lua/pg.cc
@@ -396,9 +396,12 @@ lbox_net_pg_connect(struct lua_State *L)
 	lua_pop(L, 1);
 
 	if (PQstatus(conn) != CONNECTION_OK) {
-		const char *msg = PQerrorMessage(conn);
+		luaL_Buffer b;
+		luaL_buffinit(L, &b);
+		luaL_addstring(&b, PQerrorMessage(conn));
+		luaL_pushresult(&b);
 		PQfinish(conn);
-		luaL_error(L, "%s", msg);
+		lua_error(L);
 	}
 
 	lua_pushstring(L, "raw");