mirror of
https://github.com/sqlalchemy/sqlalchemy.git
synced 2026-05-26 18:41:41 -04:00
merge PG fixes from master
Change-Id: I5630eb8ba503c567bebddd10f6e525ceb3dd5998
This commit is contained in:
@@ -166,17 +166,37 @@ def _pg_create_db(cfg, eng, ident):
|
||||
except Exception:
|
||||
pass
|
||||
currentdb = conn.scalar("select current_database()")
|
||||
for attempt in range(3):
|
||||
for attempt in range(10):
|
||||
try:
|
||||
log.info(
|
||||
"emitting CREATE DATABASE %s url %r" %
|
||||
(ident, eng.url))
|
||||
conn.execute(
|
||||
"CREATE DATABASE %s TEMPLATE %s" % (ident, currentdb))
|
||||
except exc.OperationalError as err:
|
||||
if attempt != 2 and "accessed by other users" in str(err):
|
||||
conn.connection.rollback()
|
||||
if attempt != 10 and "accessed by other users" in str(err):
|
||||
log.info(
|
||||
"got accessed by others for database %s, URI %r, "
|
||||
"sleeping for .2",
|
||||
ident, eng.url)
|
||||
time.sleep(.2)
|
||||
continue
|
||||
else:
|
||||
raise
|
||||
else:
|
||||
time.sleep(.5)
|
||||
log.info(
|
||||
"checking for database %s URI %r" %
|
||||
(ident, eng.url))
|
||||
result = conn.execute(
|
||||
"SELECT datname FROM pg_database "
|
||||
"where datname='%s'" % ident)
|
||||
row = result.first()
|
||||
if not row:
|
||||
raise Exception(
|
||||
"Database named %s did not get "
|
||||
"created, in engine %r" % (ident, eng.url))
|
||||
break
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user