сенсорная фаланга версия 32a7
Модератор: Gorlum
Правила форума
Внимание! Этот форум - только для обсуждения вопросов и проблем на сторонних серверах, использующих движок Сверхновой!
Для обсуждения оригинальных серверов СН существуют соответствующие форумы: для багрепортов, для обсуждение движка на офф-серверах.
Общие багрепорты и проблемы на публичных серверах обсуждаются в соответствующем форуме.
Для обсуждения работа модулей и багрепротов по их работе существует свой форум
Внимание! Этот форум - только для обсуждения вопросов и проблем на сторонних серверах, использующих движок Сверхновой!
Для обсуждения оригинальных серверов СН существуют соответствующие форумы: для багрепортов, для обсуждение движка на офф-серверах.
Общие багрепорты и проблемы на публичных серверах обсуждаются в соответствующем форуме.
Для обсуждения работа модулей и багрепротов по их работе существует свой форум
-
- Император Вселенной
- Сообщения: 7522
- Зарегистрирован: 13 июн 2009, 15:06
- SuperNova login: Сингулярность/Gorlum
- Контактная информация:
Re: сенсорная фаланга версия 32a7
Да-да. Просто форсировать последнее обновление - это слишком сложно для цирка. Надо шаманить. Понимаю.
ВНИМАНИЕ! Администрация в личную переписку не вступает, рукописи не возвращает и не рецензирует!
* Если у меня слишком хорошее настроение - я хожу почитать чат *
* Если у меня слишком хорошее настроение - я хожу почитать чат *
-
- Император Вселенной
- Сообщения: 7522
- Зарегистрирован: 13 июн 2009, 15:06
- SuperNova login: Сингулярность/Gorlum
- Контактная информация:
Re: сенсорная фаланга версия 32a7
Ах, да. И тонкий намек - если одно из прошлых обновлений провалилось при установке constraint, в будующем вас могут (и будут!) ожидать определенные сюрпризы (неприятные). Поэтому внимательно читайте логи апдейтов. И применяйте ручками или форсируйте абдейты.
И напоминаю:
Disclaimer aka Отмазка
======================
ВНИМАНИЕ! Проект находится в стадии альфа-версии! В настоящее время он не
предназначен для production-использования! Код предоставляется "as-is". Вы
используете его на свой страх и риск! Автор не несет ответственности за
материальный, моральный, кармический, душевный и любой другой ущерб,
причиненный вам от использования, неиспользования, самим фактом существования
этого кода или любым другим способом.
Предуведомления о необходимости наличия квалификации
====================================================
Данные инструкции предполагают умение самостоятельно настроить или использовать
сторонний веб-хостинг, знакомство с MySQL и PHP, доступ к инструментам
управленя MySQL и хостингом. Если вы не обладаете опытом самостоятельной
настройки сайтов - этот дистрибутив вам не подойдет
ВНИМАНИЕ! Я не могу протестировать все возможные комбинации и версии MySQL &
PHP & XCache & веб-серверов! Это означает, что при некоторых комбинациях и
настройках среды движок может не работать. Именно для этого нужны навыки
настройки и конфигурации веб-серверов.
И напоминаю:
Disclaimer aka Отмазка
======================
ВНИМАНИЕ! Проект находится в стадии альфа-версии! В настоящее время он не
предназначен для production-использования! Код предоставляется "as-is". Вы
используете его на свой страх и риск! Автор не несет ответственности за
материальный, моральный, кармический, душевный и любой другой ущерб,
причиненный вам от использования, неиспользования, самим фактом существования
этого кода или любым другим способом.
Предуведомления о необходимости наличия квалификации
====================================================
Данные инструкции предполагают умение самостоятельно настроить или использовать
сторонний веб-хостинг, знакомство с MySQL и PHP, доступ к инструментам
управленя MySQL и хостингом. Если вы не обладаете опытом самостоятельной
настройки сайтов - этот дистрибутив вам не подойдет
ВНИМАНИЕ! Я не могу протестировать все возможные комбинации и версии MySQL &
PHP & XCache & веб-серверов! Это означает, что при некоторых комбинациях и
настройках среды движок может не работать. Именно для этого нужны навыки
настройки и конфигурации веб-серверов.
ВНИМАНИЕ! Администрация в личную переписку не вступает, рукописи не возвращает и не рецензирует!
* Если у меня слишком хорошее настроение - я хожу почитать чат *
* Если у меня слишком хорошее настроение - я хожу почитать чат *
-
- Прапорщик Альянса
- Сообщения: 92
- Зарегистрирован: 13 фев 2011, 16:01
Re: сенсорная фаланга версия 32a7
Форсировать обновление с нуля
Повторить предыдущее обновление
Код: Выделить всё
Обновление сервера.
Altering error for table `users`: Can't create table './x20/#sql-faa_1c413b.frm' (errno: 121)
array(2)
0 => string(126) ADD∴CONSTRAINT∴`FK_users_ally_id`∴FOREIGN∴KEY∴(`ally_id`)∴REFERENCES∴`sn_alliance`∴(`id`)∴ON∴DELETE∴SET∴NULL∴ON∴UPDATE∴CASCADE
1 => string(137) ADD∴CONSTRAINT∴`FK_users_ally_name`∴FOREIGN∴KEY∴(`ally_name`)∴REFERENCES∴`sn_alliance`∴(`ally_name`)∴ON∴DELETE∴SET∴NULL∴ON∴UPDATE∴CASCADE
Код: Выделить всё
Обновление сервера.
Altering error for table `users`: Can't create table './x20/#sql-faa_1c41c5.frm' (errno: 121)
array(1)
0 => string(134) ADD∴CONSTRAINT∴`FK_users_ally_tag`∴FOREIGN∴KEY∴(`ally_tag`)∴REFERENCES∴`sn_alliance`∴(`ally_tag`)∴ON∴DELETE∴SET∴NULL∴ON∴UPD
-
- Прапорщик Альянса
- Сообщения: 92
- Зарегистрирован: 13 фев 2011, 16:01
Re: сенсорная фаланга версия 32a7
Все выполнил через phpmyadmin, ошибок нет, но это не помогло. Снова при обновлении статы вылазиет:killer писал(а):прошу прощения,ступил....DarkKnight писал(а):Это файл из 32а7.killer писал(а): скинь файл: includes/functions/sys_stat_functions.php
похоже в нём проблема
решением думаю будет следующее:
Выполните запрос в бд:В общем проблема из-за таблицы бд...Код: Выделить всё
DROP TABLE IF EXISTS `sn_statpoints`; CREATE TABLE `sn_statpoints` ( `id_owner` int(11) NOT NULL DEFAULT '0', `id_ally` int(11) NOT NULL DEFAULT '0', `stat_type` int(2) NOT NULL DEFAULT '0', `stat_code` int(11) NOT NULL DEFAULT '0', `tech_rank` int(11) NOT NULL DEFAULT '0', `tech_old_rank` int(11) NOT NULL DEFAULT '0', `tech_points` bigint(20) NOT NULL DEFAULT '0', `tech_count` int(11) NOT NULL DEFAULT '0', `build_rank` int(11) NOT NULL DEFAULT '0', `build_old_rank` int(11) NOT NULL DEFAULT '0', `build_points` bigint(20) NOT NULL DEFAULT '0', `build_count` int(11) NOT NULL DEFAULT '0', `defs_rank` int(11) NOT NULL DEFAULT '0', `defs_old_rank` int(11) NOT NULL DEFAULT '0', `defs_points` bigint(20) NOT NULL DEFAULT '0', `defs_count` int(11) NOT NULL DEFAULT '0', `fleet_rank` int(11) NOT NULL DEFAULT '0', `fleet_old_rank` int(11) NOT NULL DEFAULT '0', `fleet_points` bigint(20) NOT NULL DEFAULT '0', `fleet_count` int(11) NOT NULL DEFAULT '0', `total_rank` int(11) NOT NULL DEFAULT '0', `total_old_rank` int(11) NOT NULL DEFAULT '0', `total_points` bigint(20) NOT NULL DEFAULT '0', `total_count` int(11) NOT NULL DEFAULT '0', `stat_date` int(11) NOT NULL DEFAULT '0', `res_rank` int(11) DEFAULT '0' COMMENT 'Rank by resources', `res_old_rank` int(11) DEFAULT '0' COMMENT 'Old rank by resources', `res_points` bigint(20) DEFAULT '0' COMMENT 'Resource stat points', `res_count` bigint(20) DEFAULT '0' COMMENT 'Old rank by resources', KEY `TECH` (`tech_points`), KEY `BUILDS` (`build_points`), KEY `DEFS` (`defs_points`), KEY `FLEET` (`fleet_points`), KEY `TOTAL` (`total_points`), KEY `i_stats_owner` (`id_owner`,`stat_type`,`stat_code`,`tech_rank`,`build_rank`,`defs_rank`,`fleet_rank`,`total_rank`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; UPDATE `sn_config` SET `config_value` = '30' WHERE `sn_config`.`config_name` = 'db_version';
Код: Выделить всё
Адрес страницы /scheduler.php
Тип 500 SQL Error
Текст ошибки
Cannot add or update a child row: a foreign key constraint fails (`x20/sn_statpoints`, CONSTRAINT `FK_stats_id_ally` FOREIGN KEY (`id_ally`) REFERENCES `sn_alliance` (`id`) ON DELETE CASCADE ON UPDATE CASCADE)
INSERT INTO sn_statpoints SET `id_owner` = '2', `id_ally` = '', `stat_type` = '1', `stat_code` = '1', `tech_points` = '15099487.2', `tech_count` = '63', `build_points` = '849287.038608', `build_count` = '129', `defs_points` = '2174189.5', `defs_count` = '592668', `fleet_points` = '18', `fleet_count` = '1', `res_points` = '41574.4679111', `res_count` = '41574467.9111', `total_points` = '18164556.2065', `total_count` = '42167328.9111', `stat_date` = '1322198151';
Отладочная информация
backtrace = array(2)
2 => array(4)
file => string(94) /home/supernova/domains/x20.supernova.uz/public_html/includes/functions/sys_stat_functions.php
line => integer 250
function => string(7) doquery
args => array(1)
0 => string(466) INSERT∴INTO∴{{statpoints}}∴SET∴`id_owner`∴=∴'2',∴`id_ally`∴=∴'',∴`stat_type`∴=∴'1',∴`stat_code`∴=∴'1',∴`tech_points`∴=∴'15099487.2',∴`tech_count`∴=∴'63',∴`build_points`∴=∴'849287.038608',∴`build_count`∴=∴'129',∴`defs_points`∴=∴'2174189.5',∴`defs_count`∴=∴'592668',∴`fleet_points`∴=∴'18',∴`fleet_count`∴=∴'1',∴`res_points`∴=∴'41574.4679111',∴`res_count`∴=∴'41574467.9111',∴`total_points`∴=∴'18164556.2065',∴`total_count`∴=∴'42167328.9111',∴`stat_date`∴=∴'1322198151';
3 => array(4)
file => string(66) /home/supernova/domains/x20.supernova.uz/public_html/scheduler.php
line => integer 54
function => string(17) SYS_statCalculate
args => array(0)
-
- Император Вселенной
- Сообщения: 7522
- Зарегистрирован: 13 июн 2009, 15:06
- SuperNova login: Сингулярность/Gorlum
- Контактная информация:
Re: сенсорная фаланга версия 32a7
Вот поэтому и не меняются тэги/названия альянсов при переименовании. Какая-то рассинхронизация в структуре/данных таблицы. Какие - сказать невозможно, нужно смотреть по месту. Погугли - в инете полно инфы по этому поводу.DarkKnight писал(а):Форсировать обновление с нуляПовторить предыдущее обновлениеКод: Выделить всё
Обновление сервера. Altering error for table `users`: Can't create table './x20/#sql-faa_1c413b.frm' (errno: 121) array(2) 0 => string(126) ADD∴CONSTRAINT∴`FK_users_ally_id`∴FOREIGN∴KEY∴(`ally_id`)∴REFERENCES∴`sn_alliance`∴(`id`)∴ON∴DELETE∴SET∴NULL∴ON∴UPDATE∴CASCADE 1 => string(137) ADD∴CONSTRAINT∴`FK_users_ally_name`∴FOREIGN∴KEY∴(`ally_name`)∴REFERENCES∴`sn_alliance`∴(`ally_name`)∴ON∴DELETE∴SET∴NULL∴ON∴UPDATE∴CASCADE
Код: Выделить всё
Обновление сервера. Altering error for table `users`: Can't create table './x20/#sql-faa_1c41c5.frm' (errno: 121) array(1) 0 => string(134) ADD∴CONSTRAINT∴`FK_users_ally_tag`∴FOREIGN∴KEY∴(`ally_tag`)∴REFERENCES∴`sn_alliance`∴(`ally_tag`)∴ON∴DELETE∴SET∴NULL∴ON∴UPD
ВНИМАНИЕ! Администрация в личную переписку не вступает, рукописи не возвращает и не рецензирует!
* Если у меня слишком хорошее настроение - я хожу почитать чат *
* Если у меня слишком хорошее настроение - я хожу почитать чат *
-
- Прапорщик Альянса
- Сообщения: 92
- Зарегистрирован: 13 фев 2011, 16:01
Re: сенсорная фаланга версия 32a7
Gorlum писал(а):Решение проблемы с констраинтами на примере таблицы users и поля ally_tag
Нам нужно добавить вот такой constraint:Он связывает поле ally_tag таблицы users (подчиненная) с полем ally_tag таблицы alliance (главная). Когда поле ally_tag изменяется в таблице alliance, то связанное поле автоматически изменяется в таблице users. Если запись удаляется из таблицы users - поле ally_tag d соответствующей записи удаляется из таблицы users.Код: Выделить всё
ADD CONSTRAINT `FK_users_ally_tag` FOREIGN KEY (`ally_tag`) REFERENCES `{$config->db_prefix}alliance` (`ally_tag`) ON DELETE SET NULL ON UPDATE CASCADE
Что бы можно было сделать такую связь, нужна логическая целостность обоих таблиц. Это означает, чтоСобственно, апдейтер сам делает все нужные изменения. НО ТОЛЬКО если ранее все апдейты проходили нормально! Если, например, ранее сбился constraint на ally_id, то апдейтер НЕ СМОЖЕТ нормально отработать constraint на ally_tag.
- Типы и кодировка связываемых полей должны совпадать.
- В подчиненной таблице в свойствах поля должно стоять DEFAULT NULL
- Для всех связываемых полей должны существовать индексы во всех используемых таблицах
- На момент связывания в подчиненной таблице НЕ ДОЛЖНО быть таких значений в связываемом поле, которых нет в главной таблице. В нашем случае (самый сложный) нужно: во-первых обновить все значения ally_tag до текущих
во-вторых - для тех записей, для которых Альянсы не существуют, установить соответствующее поле в NULLКод: Выделить всё
doquery("UPDATE {{users}} AS u LEFT JOIN {{alliance}} AS a ON a.id = u.ally_id SET u.ally_tag = a.ally_tag;");
Код: Выделить всё
doquery("UPDATE {{users}} AS u LEFT JOIN {{alliance}} AS a ON a.id = u.ally_id SET u.ally_id = NULL, u.ally_tag = NULL WHERE a.id is NULL;");
- Если бы в constraint стояло бы ON DELETE CASCADE, а не ON DELETE SET NULL, то нужно было бы просто удалить из подчиненной таблицы все записи, для которых нет соответствия в главной таблице. На примере constraint для таблицы shortcut:
соответствующий запрос:Код: Выделить всё
ADD CONSTRAINT `FK_shortcut_planet_id` FOREIGN KEY (`shortcut_planet_id`) REFERENCES `{$config->db_prefix}planets` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
Код: Выделить всё
doquery('DELETE FROM {{shortcut}} WHERE shortcut_planet_id NOT IN (SELECT id FROM {{planets}});');
- ??????
- PROFIT!
Мануал для курения:
http://dev.mysql.com/doc/refman/5.5/en/ ... aints.html
И совсем продвинутый мануал:
http://dev.mysql.com/doc/refman/5.5/en/constraints.html
А если я например очищу полностью таблицу альянсов и заново будем регать, проблема решится?
Ну и сделаю ADD CONSTRAINT `FK_users_ally_tag` FOREIGN KEY (`ally_tag`) REFERENCES `{$config->db_prefix}alliance` (`ally_tag`) ON DELETE SET NULL ON UPDATE CASCADE
-
- Император Вселенной
- Сообщения: 7522
- Зарегистрирован: 13 июн 2009, 15:06
- SuperNova login: Сингулярность/Gorlum
- Контактная информация:
Re: сенсорная фаланга версия 32a7
Ты читал вообще то, что я написал? Проблема - не в таблице Альянсов (главная таблица), а в таблице users (подчиненная таблица). Нужно обработать таблицу users, что бы поле ally_tag не содержало значений, которых нет в таблице alliances. Как вариант - можешь дропнуть все поля, относящиеся к Альянсам в таблице пользователей (ally_*) и создать их заново.DarkKnight писал(а):А если я например очищу полностью таблицу альянсов и заново будем регать, проблема решится?
Ну и сделаю ADD CONSTRAINT `FK_users_ally_tag` FOREIGN KEY (`ally_tag`) REFERENCES `{$config->db_prefix}alliance` (`ally_tag`) ON DELETE SET NULL ON UPDATE CASCADE
ВНИМАНИЕ! Администрация в личную переписку не вступает, рукописи не возвращает и не рецензирует!
* Если у меня слишком хорошее настроение - я хожу почитать чат *
* Если у меня слишком хорошее настроение - я хожу почитать чат *
-
- Майор разведки
- Сообщения: 292
- Зарегистрирован: 03 янв 2011, 22:22
- SuperNova login: killer
- Откуда: Херсон
Re: сенсорная фаланга версия 32a7
Gorlum, спасибо за инфу
не посчитайте за набивку постов
Иногда пишу полезное,иногда-бред
Иногда пишу полезное,иногда-бред
-
- Император Вселенной
- Сообщения: 7522
- Зарегистрирован: 13 июн 2009, 15:06
- SuperNova login: Сингулярность/Gorlum
- Контактная информация:
Re: сенсорная фаланга версия 32a7
Народ, но это же элементарнейшие вещи по SQL! Чем несколько дней фигней страдать - могли бы за пол-часа найти ошибку в гугле и прочитать все то же самое в инете! И сами все поправить.killer писал(а):Gorlum, спасибо за инфу
ВНИМАНИЕ! Администрация в личную переписку не вступает, рукописи не возвращает и не рецензирует!
* Если у меня слишком хорошее настроение - я хожу почитать чат *
* Если у меня слишком хорошее настроение - я хожу почитать чат *
-
- Прапорщик Альянса
- Сообщения: 92
- Зарегистрирован: 13 фев 2011, 16:01
Re: сенсорная фаланга версия 32a7
Спасибо, или шаманство, или последний сегодняшний апдейт, но проблема решилась)