DataObjects/Core_project.php
[Pman.Core] / UpdateDatabase.php
index 866ea29..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'])) {
@@ -881,19 +886,28 @@ class Pman_Core_UpdateDatabase extends Pman
         }
         
         $db = DB_DataObject::factory('core_enum');
-        $db->query("show variables like 'sql_mode'");
+        $db->query("select version() as version");
         $db->fetch();
         
-        $modes = explode(",", $db->Value);
-        
-        if(
-                in_array('NO_ZERO_IN_DATE', $modes) ||
-                in_array('NO_ZERO_DATE', $modes) ||
-                !in_array('ALLOW_INVALID_DATES', $modes)
-        ){
-            die("Error: set sql_mode include 'ALLOW_INVALID_DATES', remove 'NO_ZERO_IN_DATE' AND 'NO_ZERO_DATE' in my.cnf\n\n");
+        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");
+            }
         }
-//        STRICT_TRANS_TABLES
+        
         $done_check = true;;