fix identifiers on eninene migrate
[Pman.Core] / UpdateDatabase / MysqlEngineCharset.php
index 3a9bbcc..f977bbe 100644 (file)
@@ -13,10 +13,15 @@ class Pman_Core_UpdateDatabase_MysqlEngineCharset {
     
     function __construct()
     {
-          
+        // this might get run before we have imported the database
+        // and hence not have any db.
         $this->loadIniFiles(); //?? shared???
         
+       
         $dbo = DB_DataObject::factory('core_enum');
+        
+        
+       
         if (is_a($dbo, 'PDO_DataObject')) {
             
             $this->views = $dbo->generator()->introspection()->getListOf('views');
@@ -28,10 +33,9 @@ class Pman_Core_UpdateDatabase_MysqlEngineCharset {
         // update the engine first - get's around 1000 character limit on indexes..cd
         // however - Innodb does not support fulltext indexes, so this may fail...
         $this->updateEngine(); 
-        
         $this->updateCharacterSet();
-        
-        
+         
     }
     
     function loadIniFiles()
@@ -113,6 +117,7 @@ class Pman_Core_UpdateDatabase_MysqlEngineCharset {
     {
         $db = DB_DataObject::factory('core_enum');
         $db->query("show variables like 'innodb_file_per_table'");
+        
         $db->fetch();
         
         $pg = HTML_FlexyFramework::get()->page;
@@ -133,12 +138,13 @@ class Pman_Core_UpdateDatabase_MysqlEngineCharset {
         
         $views = $this->views;
         
-        
+         echo "a3\n";
         foreach (array_keys($this->schema) as $tbl){
             
             if(strpos($tbl, '__keys') !== false ){
                 continue;
             }
+            
             if(in_array($tbl , $views)) {
                 continue;
             }
@@ -159,16 +165,25 @@ class Pman_Core_UpdateDatabase_MysqlEngineCharset {
             if (!$ce->fetch()) {
                 continue;
             }
+            //AWS is returning captials?
+            $engine = isset($ce->engine) ? $ce->engine : $ce->ENGINE;
             
-            if($ce->engine == 'InnoDB' ){
+            if($engine == 'InnoDB' ){
                 echo "InnoDB: SKIP $tbl\n";
                 continue;
             }
+            if($engine == 'ndbcluster' ){
+                echo "ndbcluster: SKIP $tbl\n";
+                continue;
+            }
+            
+            // should really determine if we are running in cluster ready ...
+            
             // this used to be utf8_unicode_ci
             //as the default collation for stored procedure parameters is utf8_general_ci and you can't mix collations.
             
             $ce = DB_DataObject::factory('core_enum');
-            $ce->query("ALTER TABLE $tbl ENGINE=InnoDB");
+            $ce->query("ALTER TABLE `$tbl` ENGINE=InnoDB");
             echo "InnoDB: FIXED {$tbl}\n";
             
         }