Ensure that database name does not exceed 28 chars. Fixes #87
authorFrederic Massart <fred@moodle.com>
Mon, 21 Jul 2014 02:08:51 +0000 (10:08 +0800)
committerFrederic Massart <fred@moodle.com>
Mon, 21 Jul 2014 02:08:51 +0000 (10:08 +0800)
lib/commands/create.py
lib/moodle.py

index ac24398..59074d8 100644 (file)
@@ -182,11 +182,11 @@ class CreateCommand(Command):
         if args.install:
 
             # Checking database
-            dbname = re.sub(r'[^a-zA-Z0-9]', '', name).lower()[:28]
+            dbname = re.sub(r'[^a-zA-Z0-9]', '', name).lower()
             prefixDbname = self.C.get('db.namePrefix')
-            if prefixDbname == None:
-                prefixDbname = '';
-            dbname = prefixDbname + dbname
+            if prefixDbname:
+                dbname = prefixDbname + dbname
+            dbname = dbname[:28]
             db = DB(engine, self.C.get('db.%s' % engine))
             dropDb = False
             if db.dbexists(dbname):
index f82ff79..365ffef 100644 (file)
@@ -383,11 +383,11 @@ class Moodle(object):
         if dataDir == None or not os.path.isdir(dataDir):
             raise InstallException('Cannot install instance without knowing where the data directory is')
         if dbname == None:
-            dbname = re.sub(r'[^a-zA-Z0-9]', '', self.identifier).lower()[:28]
+            dbname = re.sub(r'[^a-zA-Z0-9]', '', self.identifier).lower()
             prefixDbname = C.get('db.namePrefix')
-            if prefixDbname == None:
-                prefixDbname = '';
-            dbname = prefixDbname + dbname
+            if prefixDbname:
+                dbname = prefixDbname + dbname
+            dbname = dbname[:28]
         if engine == None:
             engine = C.get('defaultEngine')
         if fullname == None: