DataObjects/Core_office.php
[Pman.Core] / UpdateDatabase.php
index 68fd832..1b3f1af 100644 (file)
@@ -68,7 +68,6 @@ class Pman_Core_UpdateDatabase extends Pman
             'max' => 1,
         ),
         
-        
         'json-person' => array(
             'desc' => 'Person JSON file',
             'default' => '',
@@ -150,7 +149,13 @@ class Pman_Core_UpdateDatabase extends Pman
         
         $this->checkOpts($opts);
         
-        $this->runExtensions(); // do this first, so the innodb change + utf8 fixes column max sizes
+        
+        // do this first, so the innodb change + utf8 fixes column max sizes
+        
+        // this will trigger errors about freetext indexes - we will have to remove them manually.?
+        // otherwise we need to do an sql query to find them, then remove them (not really worth it as it only affects really old code..)
+        
+        $this->runExtensions(); 
 
         
         if (empty($opts['data-only'])) {
@@ -880,6 +885,29 @@ class Pman_Core_UpdateDatabase extends Pman
             die("Error: set innodb_file_per_table = 1 in my.cnf\n\n");
         }
         
+        $db = DB_DataObject::factory('core_enum');
+        $db->query("select version() as version");
+        $db->fetch();
+        
+        if (version_compare($db->version, '5.7', '>=' )) {
+                
+            $db = DB_DataObject::factory('core_enum');
+            $db->query("show variables like 'sql_mode'");
+            $db->fetch();
+            
+            $modes = explode(",", $db->Value);
+            
+            // these are 'new' problems with mysql.
+            if(
+                    in_array('NO_ZERO_IN_DATE', $modes) ||
+                    in_array('NO_ZERO_DATE', $modes) ||
+                    in_array('STRICT_TRANS_TABLES', $modes) || 
+                    !in_array('ALLOW_INVALID_DATES', $modes)
+            ){
+                die("Error: set sql_mode include 'ALLOW_INVALID_DATES', remove 'NO_ZERO_IN_DATE' AND 'STRICT_TRANS_TABLES' AND 'NO_ZERO_DATE' in my.cnf\n\n");
+            }
+        }
+        
         $done_check = true;;