Поддержка Проблемы и решения Базы и плагин корректен ли автоинстал?

  • имеется дамп базы данных плагина сложен в файл, без базы плагин работать не будет, ибо оттуда берет данные для анализа.

    Не будет ли хреновым решение при активации плагина открывать этот файл и сразу экспортировать в базу эти таблицы с данными. При анинстале соответственно удалять.

    И если такое вполне кошерно, то есть ли решение, кроме как регуляркой, подставить при экспорте преффикс таблиц применяемый на сайте.

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Если при активации плагина нужно импортировать данные, я бы хранил их не в виде SQL-дампа, а в XML или JSON. Тогда при импорте не нужно будет беспокоиться о префиксе таблиц.

    Перед активацией стоит проверять существование данных в базе, чтобы не импортировать их повторно.

    c префиксами таблиц в принципе через str_replace() нормально вышло, а вот проверка врчему то всегда дает ошибку синтаксиса,
    причем пробовал по разному:
    — и как в кодексе советуют — SHOW TABLES LIKE $table
    — и так SELECT * FROM $table WHERE 0

    а таблица при sql файле создаваться все равно не будет ибо IF NOT EXISTS
    сам плагин пока в альфе лежит тут
    https://github.com/WP-Panda/cr_regions_ip

    UPD: попробовал JSON — 2,5 мб получается база
    XML — почти 10 мб
    a sql — 1.5мб так, что преимуществ не сильно видно.

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    проверка врчему то всегда дает ошибку синтаксиса

    У меня такая проверка работает:

    if ( ! $wpdb->get_var( "SHOW TABLES LIKE '{$table}'" ) ) {
    	$charset_collate = '';
    
    	if ( ! empty( $wpdb->charset ) ) {
    		$charset_collate = "DEFAULT CHARACTER SET $wpdb->charset";
    	}
    	if ( ! empty( $wpdb->collate ) ) {
    		$charset_collate .= " COLLATE $wpdb->collate";
    	}
    
    	$wpdb->query(
    		"CREATE TABLE {$table} (
    		...
    		) $charset_collate"
    	);
    }

    так, что преимуществ не сильно видно

    При замене префикса в дампе есть риск затронуть данные. Впрочем, если заранее известно, что в самих данных ничего похожего не встречается, то и этот вариант имеет право на существование.

    а где можно почитать о API wpdb{}
    ибо ни о charset ни о сollate в кодексе не нашел

    вопрос снят, нагуглил http://www.tig12.net/downloads/apidocs/wp/wp-includes/wpdb.class.html

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • Тема «Базы и плагин корректен ли автоинстал?» закрыта для новых ответов.