Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Міграція bb_users #114

Open
yukoff opened this issue Aug 26, 2017 · 2 comments
Open

Міграція bb_users #114

yukoff opened this issue Aug 26, 2017 · 2 comments

Comments

@yukoff
Copy link
Contributor

yukoff commented Aug 26, 2017

Перед фіналізацією #74 хочу узгодити решту таблиць, по яких не створювалися питання. У bb_users наразі така картина:

old new
user_password2 user_password
- user_timer
- user_session_page
- user_style
- user_dateformat
user_login_tries +
user_last_login_try +
- user_emailtime
- user_viewemail
- user_attachsig
- user_allowhtml
- user_allowbbcode
- user_allowsmile
- user_allowavatar
- user_allow_pm
user_allow_viewonline +
- user_notify
- user_notify_pm
- user_popup_pm
user_avatar +
- user_avatar_type
- user_sig_bbcode_uid
- user_aim
- user_yim
- user_msnm
- user_allow_passkey
- user_from_flag
user_allowdefaultavatar +
user_warnings +
user_banned +
- bt_tor_browse_set
user_unread_topics +
user_hide_bt_stats +
user_hide_bt_history +
user_hide_bt_activity +
user_hide_bt_topics +
user_bt_ssl +

Де:
- = колонка дропається при міграції
+ = колонка додається до схеми TP2

@konfuciusu, чи все правильно, чи може щось по іншому треба мігрувати?

@konfuciusu
Copy link
Contributor

@yukoff можна додатково дропнути:

user_timer
user_viewemail
user_attachsig
user_notify
user_notify_pm
user_popup_pm
user_avatar_type
user_sig_bbcode_uid
user_allow_passkey
user_from_flag
bt_tor_browse_set

Не зовсім зрозуміло, що з аватарами. В нас в user_avatar просто назва файлу, наприклад 15280409794f0de7c22175a.png.

@yukoff
Copy link
Contributor Author

yukoff commented Aug 30, 2017

@konfuciusu, Схоже, аватари треба ще додатково у ФС (файловій системі) мігрувати - зараз ім'я файлу аватара (get_avatar()) - це його (користувача) ідентифікатор user_id + розширення файлу, що можна описати як

SELECT bb_extensions.extension FROM bb_extensions, bb_users
WHERE bb_extensions.ext_id = bb_users.avatar_ext_id
AND user_id = ${user_id}

Тобто фактично треба фізично змігрувати файли у ФС, оновити bb_users.avatar_ext_id відповідно до розширення файлу аватара, а потім дропнути колонку user_avatar. Ну або навіть краще те саме, але через тимчасову таблицю:

  • створюємо тимчасову таблицю з полями (user_id, user_avatar, ext_id)
    Наприклад, tmp_migrate_avatars
  • пишемо туди наявних користувачів
    INSERT INTO tmp_migrate_avatars SELECT user_id, user_avatar, 0 FROM bb_users WHERE …
  • робимо один великий ALTER TABLE bb_users …
  • робимо міграцію аватарів у ФС (базуючись на даних з bb_users), відповідно оновлюючи avatar_ext_id у тимчасовій таблиці
  • робимо UPDATE bb_users u, tmp_migrate_avatars a SET u.avatar_ext_id = a.ext_id WHERE …
  • дропаємо тимчасову таблицю

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants