X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=UpdateDatabase%2FMysqlEngineCharset.php;h=ba81c6361b8648ad4fdeac6ce989e19a0cb77c96;hb=3dfa28ee12e72e27f69a7734bef807c2628e5d53;hp=5bf3ce55853ae38871e4c015af1a149921e7a076;hpb=728f9d0ff553866c780ca4600264c7616e9a7dc0;p=Pman.Core diff --git a/UpdateDatabase/MysqlEngineCharset.php b/UpdateDatabase/MysqlEngineCharset.php index 5bf3ce55..ba81c636 100644 --- a/UpdateDatabase/MysqlEngineCharset.php +++ b/UpdateDatabase/MysqlEngineCharset.php @@ -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,11 +117,19 @@ class Pman_Core_UpdateDatabase_MysqlEngineCharset { { $db = DB_DataObject::factory('core_enum'); $db->query("show variables like 'innodb_file_per_table'"); + $db->fetch(); - if ($db->Value == 'OFF') { - die("Error: set innodb_file_per_table = 1 in my.cnf\n\n"); + + $pg = HTML_FlexyFramework::get()->page; + + if (empty($pg->opts['skip-mysql-checks'])) { + if ($db->Value == 'OFF') { + die("Error: set innodb_file_per_table = 1 in my.cnf\n\n"); + } + } + // get a list of table views... // innodb in single files is far more efficient that MYD or one big innodb file. // first check if database is using this format. @@ -126,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; } @@ -152,11 +165,20 @@ 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.