class Pman_Core_UpdateDatabase_MysqlEngineCharset {
var $dburl;
- var $schema;
- var $links;
+ var $schema = array();
+ var $links = array();
function __construct()
{
$ff->generateDataobjectsCache(true);
$this->dburl = parse_url($ff->database);
+ print_R($ff->PDO_DataObject);exit;
+
$dbini = 'ini_'. basename($this->dburl['path']);
$iniCache = $ff->DB_DataObject[$dbini];
+ if (!file_exists($iniCache)) {
+ return;
+ }
$this->schema = parse_ini_file($iniCache, true);
$this->links = parse_ini_file(preg_replace('/\.ini$/', '.links.ini', $iniCache), true);
function updateCharacterSet()
{
+ $db = DB_DataObject::factory('core_enum')->getDatabaseConnection();
+ $views = $db->getListOf( 'views');
+
+
foreach (array_keys($this->schema) as $tbl){
if(strpos($tbl, '__keys') !== false ){
continue;
}
+ if(in_array($tbl , $views)) {
+ continue;
+ }
+
$ce = DB_DataObject::factory('core_enum');
$ce->query("
T.table_name = '{$tbl}' -- COLLATE utf8_general_ci
");
- $ce->fetch();
+ if (!$ce->fetch()) {
+ continue;
+ }
if($ce->csname == 'utf8' && $ce->collatename == 'utf8_general_ci'){
echo "utf8: SKIP $tbl\n";
}
function updateEngine()
{
+ $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");
+ }
+
+ // 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.
+
+
+
+ $db = DB_DataObject::factory('core_enum')->getDatabaseConnection();
+ $views = $db->getListOf( 'views'); // needs updated pear...
+
+
+
+
foreach (array_keys($this->schema) as $tbl){
if(strpos($tbl, '__keys') !== false ){
continue;
}
+ if(in_array($tbl , $views)) {
+ continue;
+ }
$ce = DB_DataObject::factory('core_enum');
- $ce->query("select engine from information_schema.tables where table_schema='{$ce->database()}' and table_name = '{$tbl}'");
+ $ce->query("
+ select
+ engine
+ from
+ information_schema.tables
+ where
+ table_schema='{$ce->database()}'
+ and
+ table_name = '{$tbl}'
+ ");
- $ce->fetch();
+ if (!$ce->fetch()) {
+ continue;
+ }
if($ce->engine == 'InnoDB' ){
echo "InnoDB: SKIP $tbl\n";