[HyperDB] dbDeltas with HyperDB
Andy Skelton
skeltoac at gmail.com
Wed Oct 19 17:43:44 UTC 2011
Why does dbDelta bother with SHOW TABLES at all? Why not just loop
over the table names and do DESCRIBE TABLE on each one?
foreach ( $cqueries as $table => $qry ) {
$tablefields = $wpdb->get_results( "DESCRIBE $table" );
if ( $tablefields ) {
// Generate ALTER TABLE statements
} else {
// Use CREATE TABLE statement
}
}
Andy
On Wed, Oct 19, 2011 at 12:23 PM, Chris Morrell <chris at cmorrell.com> wrote:
> Hey everyone,
>
> I'm having an issue with HyperDB and the dbDelta function. dbDelta runs the
> following code:
>
> $tables = $wpdb->get_col('SHOW TABLES;')
>
> And then loops through the results. Well, this can be a real issue with
> sharding, where each table can be located on a different database server.
> It seems to me that the only way to solve this problem would be to patch
> Wordpress core (have dbDelta check each table's existence individually) and
> also patch HyperDB to properly parse the table name from the individual SHOW
> TABLES query. There's an existing core
> ticket<http://core.trac.wordpress.org/ticket/17998>that begins to
> address a similar issue, but it won't work with HyperDB.
>
> Right now I'm just trying to figure out how to approach the issue. It seems
> like it would affect just about any plugin that uses dbDelta to upgrade
> their database tables. Has anyone else run into this problem? Any good
> solutions?
>
> Thanks!
> <http://cmorrell.com/> *Chris Morrell* Web: http://cmorrell.com Twitter:
> @inxilpro <http://twitter.com/inxilpro>
> _______________________________________________
> HyperDB mailing list
> HyperDB at lists.automattic.com
> http://lists.automattic.com/mailman/listinfo/hyperdb
>
More information about the HyperDB
mailing list