diff --git a/scripts/admin/auto-increment/reset-auto-increment_all-sites.sh b/scripts/admin/auto-increment/reset-auto-increment_all-sites.sh new file mode 100755 index 0000000000000000000000000000000000000000..e1d33854254c93c89a6ac6a51ff0d01c38e6d894 --- /dev/null +++ b/scripts/admin/auto-increment/reset-auto-increment_all-sites.sh @@ -0,0 +1,54 @@ +#!/bin/bash +# This script fixes issue https://gitlab.cern.ch/webservices/webframeworks-planning/-/issues/885 +# It accesses the database of every website, iterates over a list of tables, +# and for each {website,table} it resets the auto_increment +# which broke after the first Drupal 9.3 upgrade. + + +PATH="$PATH:~/k8s-migrate/" + +# 1. Get all the DB credentials +# Decode them +# And store them in a single line each in a file. Each line is a JSON for a single site. + +oc get -o json secret -l dbcredentials -A | \ + jq -r '.items[] | .data[] |= @base64d | {"name": (.metadata.namespace + .metadata.name), "data": .data}' | \ + jq -r -c '{"name":.name} + {"data": (.data | to_entries | map(("export "+.key+"="+.value)))}' > secrets.json + +# 2. Create a DB env file for each site + +[[ ! -d "sites" ]] && mkdir "sites" + +create_env_file(){ + JSON="$1" + filename=$(jq -r '.name' <<<"$JSON") + jq -r '.data[]' <<<"$JSON" > "sites/$filename" +} + +while IFS= read -r siteJSON; do + create_env_file "$siteJSON" +done < secrets.json + +# 3. Perform the operation for each DB + +TABLES_FILE="`dirname $0`/tables-primarykey" + +sql_connect(){ + echo "mysql --user=$dbUser --password=$dbPassword --database=$dbName --host=$dbHost --port=$dbPort -A -s" +} +export -f sql_connect + +reset_table(){ + TABLE="$0" + COLUMN="$1" + connstr="`sql_connect`" + NEW_INCR=$(($(echo "SELECT max($COLUMN) from $TABLE;" | $connstr)+1)) + echo "ALTER TABLE $TABLE AUTO_INCREMENT = $NEW_INCR;" | $connstr +} +export -f reset_table + +for site in `ls sites`; do + echo "> $site" | tee -a "`basename $0`.log" + . "sites/$site" + cat "$TABLES_FILE" | xargs -L1 bash -c 'reset_table $1' +done diff --git a/scripts/admin/auto-increment/tables-primarykey b/scripts/admin/auto-increment/tables-primarykey new file mode 100644 index 0000000000000000000000000000000000000000..53ad2d4b77c993c2b23a9931c2ec064cb51749fd --- /dev/null +++ b/scripts/admin/auto-increment/tables-primarykey @@ -0,0 +1,140 @@ +block_content id +block_content_revision revision_id +comment cid +feeds_feed fid +feeds_subscription fid +file_managed fid +flood fid +locales_source lid +menu_link_content id +menu_link_content_revision revision_id +menu_tree mlid +migrate_message_block_content_body_field msgid +migrate_message_block_content_entity_display msgid +migrate_message_block_content_entity_form_display msgid +migrate_message_block_content_type msgid +migrate_message_d6_custom_block msgid +migrate_message_d7_authmap msgid +migrate_message_d7_block msgid +migrate_message_d7_color msgid +migrate_message_d7_comment msgid +migrate_message_d7_comment_entity_display msgid +migrate_message_d7_comment_entity_form_display msgid +migrate_message_d7_comment_entity_form_display_subject msgid +migrate_message_d7_comment_field msgid +migrate_message_d7_comment_field_instance msgid +migrate_message_d7_comment_type msgid +migrate_message_d7_custom_block msgid +migrate_message_d7_dblog_settings msgid +migrate_message_d7_field msgid +migrate_message_d7_field_formatter_settings msgid +migrate_message_d7_field_instance msgid +migrate_message_d7_field_instance_widget_insert_settings msgid +migrate_message_d7_field_instance_widget_settings msgid +migrate_message_d7_file msgid +migrate_message_d7_file_private msgid +migrate_message_d7_filter_format msgid +migrate_message_d7_filter_settings msgid +migrate_message_d7_global_theme_settings msgid +migrate_message_d7_image_settings msgid +migrate_message_d7_image_styles msgid +migrate_message_d7_language_content_settings msgid +migrate_message_d7_language_negotiation_settings msgid +migrate_message_d7_language_types msgid +migrate_message_d7_matomo_settings msgid +migrate_message_d7_matomo_user_settings msgid +migrate_message_d7_menu msgid +migrate_message_d7_menu_links msgid +migrate_message_d7_node__article msgid +migrate_message_d7_node__certificates msgid +migrate_message_d7_node__contact_name msgid +migrate_message_d7_node__getting_started_info msgid +migrate_message_d7_node__image_upload msgid +migrate_message_d7_node__job_posting msgid +migrate_message_d7_node__management msgid +migrate_message_d7_node__mou msgid +migrate_message_d7_node__news msgid +migrate_message_d7_node__page msgid +migrate_message_d7_node__panel msgid +migrate_message_d7_node__security msgid +migrate_message_d7_node__tools msgid +migrate_message_d7_node__webform msgid +migrate_message_d7_node_revision__article msgid +migrate_message_d7_node_revision__certificates msgid +migrate_message_d7_node_revision__contact_name msgid +migrate_message_d7_node_revision__getting_started_info msgid +migrate_message_d7_node_revision__image_upload msgid +migrate_message_d7_node_revision__job_posting msgid +migrate_message_d7_node_revision__management msgid +migrate_message_d7_node_revision__mou msgid +migrate_message_d7_node_revision__news msgid +migrate_message_d7_node_revision__page msgid +migrate_message_d7_node_revision__panel msgid +migrate_message_d7_node_revision__security msgid +migrate_message_d7_node_revision__tools msgid +migrate_message_d7_node_revision__webform msgid +migrate_message_d7_node_settings msgid +migrate_message_d7_node_title_label msgid +migrate_message_d7_node_type msgid +migrate_message_d7_path_redirect msgid +migrate_message_d7_pathauto_patterns msgid +migrate_message_d7_pathauto_settings msgid +migrate_message_d7_rdf_mapping msgid +migrate_message_d7_search_page msgid +migrate_message_d7_search_settings msgid +migrate_message_d7_shortcut msgid +migrate_message_d7_shortcut_set msgid +migrate_message_d7_shortcut_set_users msgid +migrate_message_d7_simplesamlphp_auth msgid +migrate_message_d7_syslog_settings msgid +migrate_message_d7_system_authorize msgid +migrate_message_d7_system_cron msgid +migrate_message_d7_system_date msgid +migrate_message_d7_system_file msgid +migrate_message_d7_system_mail msgid +migrate_message_d7_system_performance msgid +migrate_message_d7_taxonomy_term__country msgid +migrate_message_d7_taxonomy_term__tags msgid +migrate_message_d7_taxonomy_vocabulary msgid +migrate_message_d7_theme_settings msgid +migrate_message_d7_url_alias msgid +migrate_message_d7_user msgid +migrate_message_d7_user_flood msgid +migrate_message_d7_user_mail msgid +migrate_message_d7_user_role msgid +migrate_message_d7_view_modes msgid +migrate_message_default_language msgid +migrate_message_file_settings msgid +migrate_message_language msgid +migrate_message_language_prefixes_and_domains msgid +migrate_message_locale_settings msgid +migrate_message_menu_settings msgid +migrate_message_system_image msgid +migrate_message_system_image_gd msgid +migrate_message_system_logging msgid +migrate_message_system_maintenance msgid +migrate_message_system_rss msgid +migrate_message_system_site msgid +migrate_message_taxonomy_settings msgid +migrate_message_text_settings msgid +migrate_message_update_settings msgid +migrate_message_user_picture_entity_display msgid +migrate_message_user_picture_entity_form_display msgid +migrate_message_user_picture_field msgid +migrate_message_user_picture_field_instance msgid +node nid +node_revision vid +old_5e1f1a_url_alias pid +openid_connect_authmap aid +path_alias id +path_alias_revision revision_id +queue item_id +redirect rid +sequences value +shortcut id +taxonomy_term_data tid +taxonomy_term_revision revision_id +watchdog wid +webform_submission sid +locales_location lid +users uid