Поддержка Поиск Результаты поиска для 'auto_increment'

Просмотр 15 результатов — с 16 по 30 (из 107)
  • Модератор Yuri

    (@yube)

    Если сделать экспорт, то ошибка, по идее должна остаться.

    Так добавьте, кто мешает? Собственно сами индексы не экспортируются, только их описание в структуре, так что им в любом случае суждено пересоздаться.

    Если что

    ALTER TABLE wp_postmeta
      ADD PRIMARY KEY (meta_id),
      ADD KEY post_id (post_id),
      ADD KEY meta_key (meta_key (191));
    

    Да, и убедитесь, что не потерялся флаг AUTO_INCREMENT.

    • Ответ изменён 2 года, 1 месяц назад пользователем Yuri.
    • Ответ изменён 2 года, 1 месяц назад пользователем Yuri.

    Выяснил возможную причину проблем с серыми квадратиками вместо изображений.

    Она точно описана в одном из сообщений на форуме:

    Вы пытались перенести сайт WordPress?

    Если это так, то если вы сделали следующее, то произойдет вышеупомянутая ошибка.

    Вы сделали резервную копию своей базы данных WordPress MySQL
    Вы настраиваете новый сайт WordPress
    Затем вы попытались восстановить резервную копию на этом недавно настроенном сайте WordPress
    После шага 2 вы должны сначала удалить все таблицы из новой базы данных WordPress, в которую вы восстановите резервную копию на шаге 3.

    Сообщения об ошибках появляются из-за того, что вы попытались импортировать дамп MySQL (файл базы данных) в непустую базу данных WordPress. Когда вы настраиваете сайт WordPress, он создает необходимые таблицы и вставляет несколько примеров записей, таких как комментарий. Итак, в вашей базе данных уже есть комментарий с id==1, и ваша резервная копия пытается добавить еще один комментарий с id==1 (скорее всего, первый реальный комментарий, добавленный на ваш сайт).

    —————————————————

    1. Открыл таблицы работающего сайта и сайта с ошибкой, начал сверять структуры каждой таблицы.
    2. Нашёл несоответствие в таблице wp_postmeta в виде отсутствия галочки AUTO_INCREMENT.
    3. Поставил галочку, при сохранении выдало ошибку: #1075
    4. Опустился ниже, и увидел, что отсутствует индекс PRIMARY.
    5. Ввёл индекс PRIMARY, выдало ошибку #1062

    Как устранить эту ошибку?

    • Добрый день!
      Делаю sql запрос :

      
      CREATE TABLE wp_search_filter_cache (
                              id bigint(20) NOT NULL AUTO_INCREMENT,
                              post_id bigint(20) NOT NULL,
                              post_parent_id bigint(20) NOT NULL,
                              field_name varchar(255) NOT NULL,
                              field_value varchar(255) NOT NULL,
                              field_value_num bigint(20) NULL,
                              field_parent_num bigint(20) NULL,
                              term_parent_id bigint(20) NULL,
                              PRIMARY KEY  (id),
                  KEY field_name_index (field_name),
                  KEY field_value_index (field_value),
                  KEY field_value_num_index (field_value_num)
                      )
      

      но мне ошибку выдает: Ошибка в запросe (1709): Index column size too large. The maximum column size is 767 bytes.
      Подскажите как это победить?

    В меру моего понимания ситуации всё необходимое предоставлено. Сейчас ради эксперимента заново создал базу и заново импортировал в неё SQL-файл, предварительно дав через phpmyadmin всем SQL-пользователям все возможные привилегии. Проблема сохранилась.

    При импорте система запрашивает файл SQL с базой. Кодировку (utf-8). Разрешение скрипту разбивать процесс импорта при приближении временного лимита (до этого не доходит, всё импортируется за секунды). Формат (SQL). Параметры формата. Режим совместимости SQL: NONE. Не использовать атрибут auto_increment для нулевых значений (галочка стоит по-дефолту, её оставляю). Read as multibytes (галочка не стоит, так и оставляю).

    Модератор Yuri

    (@yube)

    нужно как-то инкрементировать это значение?

    Его вообще не нужно указывать. Поле ID объявлено в таблице как AUTO_INCREMENT, поэтому mysql при INSERT сам подставит нужное значение.

    Модератор Yuri

    (@yube)

    Я бы для начала проверил целостность таблицы term_taxonomy и атрибут AUTO_INCREMENT у поля term_taxonomy_id в той же таблице.

    screenshot

    Спасибо, Юрий.

    CREATE TABLE IF NOT EXISTS $tbl_countries (
    id int(10) unsigned NOT NULL auto_increment,
    iso2 char(2) NOT NULL,
    name varchar(255) NOT NULL,
    PRIMARY KEY (id),
    UNIQUE iso2 (iso2),
    INDEX country_iso2 (iso2)
    ) ENGINE = InnoDB, CHARACTER SET = utf8, COLLATE = $charset_collate;
    E;

    • Здравствуйте!

      При установке плагина на Wordpess 5.4 выдаётся следующая ошибка:

      Ошибка базы данных WordPress: [Conflicting declarations: ‘CHARACTER SET DEFAULT’ and ‘CHARACTER SET utf8mb4’]
      CREATE TABLE IF NOT EXISTS countries ( id int(10) unsigned NOT NULL auto_increment, iso2 char(2) NOT NULL, name varchar(255) NOT NULL, PRIMARY KEY (id), UNIQUE iso2 (iso2), INDEX country_iso2 (iso2) ) ENGINE = InnoDB, CHARACTER SET = utf8, COLLATE = DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

      Плагин написан на заказ, для более ранней версии WordPress, с текущей версией не тестировался.

      Подскажите, пожалуйста, в чём может быть проблема?

    Посмотрите в базе данных, возможно у вас слетели параметры таблицы wp_posts.
    А именно «ID» — должен быть уникальным и иметь флаг AUTO_INCREMENT.
    Если их нет то и создать нормально страницу не получится так как не получится присвоить уникальный id поста.

    К качестве иллюстрации: http://prntscr.com/rmfytr

    • Как создать свои таблицы в БД для ВСЕХ сайтов сети, в том числе и созданных после активации плагина?
      Использую код ниже создаётся только одна «глобальная» таблица, а нужны таблицы для каждого сайта сети вида prefix_ID_ibc_stock, в том числе и для сайтов, которые будут созданы позже? или это нужно делать только вручную, т.е. при активации плагина запускать цикл с ID сайтов и для каждого сайта проверять отдельно наличие таблицы?

      
      /**
      ...
      Network: TRUE
      */
      
      namespace ibc;
      
      function activate() {
      	if ( is_multisite() ) {
      		global $wpdb;
      		$table_name = $wpdb->get_blog_prefix() . 'ibc_stock';
      		if ( $wpdb->get_var( "SHOW TABLES LIKE '$table_name'") != $table_name ) {
      			require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
      			$charset_collate = $wpdb->get_charset_collate();
      			$sql = "CREATE TABLE $table_name (
      				id mediumint(9) NOT NULL AUTO_INCREMENT,
      				book_id mediumint(9) NOT NULL,
      				registration_number varchar(55) DEFAULT '' NOT NULL,
      				PRIMARY KEY (id)
      			) $charset_collate;";
      			dbDelta( $sql );
      		}
      	}
      }
      
      register_activation_hook( __FILE__, 'ibc\activate' );
      

    Ошибка
    SQL запрос:

    ALTER TABLE
    wp_terms MODIFY COLUMN term_id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT
    Ответ MySQL: Документация

    #1062 — ALTER TABLE causes auto_increment resequencing, resulting in duplicate entry ‘1’ for key ‘PRIMARY’

    Модератор Yui

    (@fierevere)

    ゆい

    1. сделать бэкап (!)
    и проверить что у вас есть еще бэкапы всего

    2. https://wordpress.stackexchange.com/questions/225641/wordpress-database-lost-auto-increment верхний ответ с запросами

    ALTER TABLE wp_termmeta MODIFY COLUMN meta_id bigint(20) unsigned NOT NULL auto_increment;
    ALTER TABLE wp_terms MODIFY COLUMN term_id bigint(20) unsigned NOT NULL auto_increment;
    ALTER TABLE wp_term_taxonomy MODIFY COLUMN term_taxonomy_id bigint(20) unsigned NOT NULL auto_increment;
    ALTER TABLE wp_commentmeta MODIFY COLUMN meta_id bigint(20) unsigned NOT NULL auto_increment;
    ALTER TABLE wp_comments MODIFY COLUMN comment_ID bigint(20) unsigned NOT NULL auto_increment;
    ALTER TABLE wp_links MODIFY COLUMN link_id bigint(20) unsigned NOT NULL auto_increment;
    ALTER TABLE wp_options MODIFY COLUMN option_id bigint(20) unsigned NOT NULL auto_increment;
    ALTER TABLE wp_postmeta MODIFY COLUMN meta_id bigint(20) unsigned NOT NULL auto_increment;
    ALTER TABLE wp_users MODIFY COLUMN ID bigint(20) unsigned NOT NULL auto_increment;
    ALTER TABLE wp_posts MODIFY COLUMN ID bigint(20) unsigned NOT NULL auto_increment;
    ALTER TABLE wp_usermeta MODIFY COLUMN umeta_id bigint(20) unsigned NOT NULL auto_increment;
    
    CREATE INDEX term_id on wp_termmeta (term_id);
    CREATE INDEX meta_key on wp_termmeta (meta_key(191));
    CREATE INDEX slug on wp_terms (slug(191));
    CREATE INDEX name on wp_terms (name(191));
    CREATE UNIQUE INDEX term_id_taxonomy on wp_term_taxonomy (term_id, taxonomy);
    CREATE INDEX taxonomy on wp_term_taxonomy (taxonomy );
    CREATE INDEX comment_id on wp_commentmeta (comment_id);
    CREATE INDEX meta_key on wp_commentmeta (meta_key(191));
    CREATE INDEX comment_post_ID on wp_comments (comment_post_ID);
    CREATE INDEX comment_approved_date_gmt on wp_comments (comment_approved,comment_date_gmt);
    CREATE INDEX comment_date_gmt on wp_comments (comment_date_gmt);
    CREATE INDEX comment_parent on wp_comments (comment_parent);
    CREATE INDEX comment_author_email on wp_comments (comment_author_email(10));
    CREATE INDEX link_visible on wp_links (link_visible);
    CREATE UNIQUE INDEX option_name on wp_options (option_name);
    CREATE INDEX post_id on wp_postmeta (post_id);
    CREATE INDEX meta_key on wp_postmeta (meta_key);
    CREATE INDEX post_name on wp_posts (post_name(191));
    CREATE INDEX type_status_date on wp_posts (post_type,post_status,post_date,ID);
    CREATE INDEX post_parent on wp_posts (post_parent);
    CREATE INDEX post_author on wp_posts (post_author);
    CREATE INDEX user_login_key on wp_users (user_login);
    CREATE INDEX user_nicename on wp_users (user_nicename);
    CREATE INDEX user_email on wp_users (user_email);
    CREATE INDEX user_id on wp_usermeta (user_id);
    CREATE INDEX meta_key on wp_usermeta (meta_key(191));
    
    ALTER TABLE wp_terms AUTO_INCREMENT = 10000;
    ALTER TABLE wp_term_taxonomy AUTO_INCREMENT = 10000;
    ALTER TABLE wp_commentmeta AUTO_INCREMENT = 10000;
    ALTER TABLE wp_comments AUTO_INCREMENT = 10000;
    ALTER TABLE wp_links AUTO_INCREMENT = 10000;
    ALTER TABLE wp_options AUTO_INCREMENT = 10000;
    ALTER TABLE wp_postmeta AUTO_INCREMENT = 10000;
    ALTER TABLE wp_users AUTO_INCREMENT = 10000;
    ALTER TABLE wp_posts AUTO_INCREMENT = 10000;
    ALTER TABLE wp_usermeta AUTO_INCREMENT = 10000;

    также у нас по форуму поищите https://ru.wordpress.org/support/search/AUTO_INCREMENT/

    но (!) ошибка вообще-то должна была в общем случае исправиться при REPAIR

    Я, так полагаю, для wp_terms не включен AUTO_INCREMENT ??? Как включить?

    Юрий спасибо.
    Вот нашёл в сети такое предлагаемое решение:
    Зайти phpmyadmin и в таблице присвоить для id в “Дополнительно” значение “AUTO_INCREMENT” (поставить галочку в колонке A_I). После этого ошибка пропала. Причина была в том, что первая запись в таблице имела id = 1, а когда импортировалась БД, то AUTO_INCREMENT не передался. Когда добавлять новую запись, то ей присваивается сначала id = 0; когда следующую, то id = 1

    Но не нашёл в БД где этот Tabl.

    Модератор Yuri

    (@yube)

    Скорее всего, у таблицы слетел атрибут AUTO_INCREMENT

    https://ru.wordpress.org/support/search/auto_increment/

Просмотр 15 результатов — с 16 по 30 (из 107)