Страница 3 из 31

Re: Модуль отслеживания посылок

Добавлено: Вт ноя 19, 2013 12:02 pm
sergejey
LutsenkoDenis писал(а):ага, ну ок.
  • 1. Как задать составной первичный ключ? Или ключ не инкрементарный? И т.д. Судя по коду никак. Или я не прав?

    Код: Выделить всё

    // //new table
    if (strpos($definition, "auto_increment"))
    {
       $definition .= ", PRIMARY KEY(" . $field . ")";
       //$definition.=", KEY(".$field.")";
    } 
Всё верно, состоавной первичный ключ сделать таким образом не получится. Индексы можно добавлять таким образом (пример из pvalues):

Код: Выделить всё

 pvalues: INDEX (PROPERTY_ID)
 pvalues: INDEX (OBJECT_ID)
LutsenkoDenis писал(а):2. Структура данных как правило описывается отдельно от кода. Чтоб не нужно было бегать по коду и выискивать структуру а посмотреть в модели данных и увидеть модель всего прложения стразу. Структура(модель данных программы) поддерживается и обновляется путём создания модифицирующих скриптов.
Возможно и так. Данная реализация удобней как раз тем, что для поддержания актуальной структуры данных достаточно внести изменения в код конкретного модуля. Т.е. модуль сам заботится о том, чтобы для него всегда была в базе нужная структура данных. Децентрализация структуры и отсутсвие необходимости upgrade-скриптов это очень удобно. Не буду спорить о правильности, просто сужу по своему опыту в других проектах.
LutsenkoDenis писал(а): 3. Что должно быть тут:

Код: Выделить всё

$fileName = DIR_MODULES . $this->name . "/initial.sql"; 
initial.sql в целом атавизм, который крайне редко используется, но суть его в следующем -- sql-сценарии в этом файле запускаются в процессе установки/переустановки модуля, при этом система пытается этот файл изменить и закомментировать выполненные команды, чтобы они не исполнялись второй раз (при переустановке). Для корректной работы последней части необходимо, чтобы в linux-версии стояли права записи в этот файл. Но, повторюсь, я этим механизмом ни в одном из существующих модулей не пользовался.
LutsenkoDenis писал(а): 4. Зачем нужен LogFile? Или DebMes мало?

Код: Выделить всё

$data = LoadFile($fileName); 
[/list]
Э... не очень понял о каком LogFile идёт речь? Нет такой функции... а LoadFile это просто загрузка файла.

Re: Модуль отслеживания посылок

Добавлено: Вт ноя 19, 2013 12:47 pm
LutsenkoDenis
Про LogFile... да действительно фигню написал, прочитал LogFile вместо LoadFile :)

Индексы в данном случае не нужны. Но в вообще может быть не по одному индексу на таблицу и индекс может быть тоже составной.

Про правильность структуры я как раз по этой же самой причине и не писал. :)
Т.к. может быть по разному реализовано.

Re: Модуль отслеживания посылок

Добавлено: Сб ноя 30, 2013 12:47 pm
DiArt
Сегодня решил обновить с гитхаба. получилитакую картинку. что поправить?

Re: Модуль отслеживания посылок

Добавлено: Вс дек 01, 2013 12:01 am
LutsenkoDenis
можно либо забить на это сообщение,
либо переоздать все таблицы относящиеся к данному приложению.
Сообщение о том, что была неудачная попытка удалить таблицу POST_TRACK т.к. в таблице есть номера треков и по ним имеется информация в таблице POST_TRACKINFO.
На днях удалю пересоздание таблиц из приложения.

Re: Модуль отслеживания посылок

Добавлено: Вс дек 01, 2013 10:37 am
DiArt
А пересоздавать как? Вручную чистить через phpmaadmin? Если так то какие ключи и где находятся

Re: Модуль отслеживания посылок

Добавлено: Ср дек 18, 2013 6:32 am
dmitriy77
Аналогичная ошибка, удалось что нибудь сделать? Только добавил приложение, и сразу она выскакивает

Re: Модуль отслеживания посылок

Добавлено: Ср дек 18, 2013 3:36 pm
LutsenkoDenis
Сори за долгое отсутствие :(
переливал систему.

код по очистке данных таблиц с сохранением данных во временный таблицах.

Код: Выделить всё

create table TMP_POST_PROXY as select * from POST_PROXY;
create table TMP_POST_MAIL as select * from POST_MAIL;
create table TMP_POST_TRACK as select * from POST_TRACK;
create table TMP_POST_TRACKINFO as select * from POST_TRACKINFO;

drop table if exists POST_PROXY;
drop table if exists POST_MAIL;
drop table if exists POST_TRACKINFO;
drop table if exists POST_TRACK;


create table POST_PROXY(
                  FLAG_PROXY           VARCHAR(1) not null default 'N',
                  PROXY_HOST           VARCHAR(64),
                  PROXY_PORT           VARCHAR(4),
                  PROXY_USER           VARCHAR(64),
                  PROXY_PASSWD         VARCHAR(64),
                  LM_DATE              DATETIME not null,
                  primary key (FLAG_PROXY)
                );

insert into POST_PROXY(FLAG_PROXY, PROXY_HOST, PROXY_PORT, PROXY_USER, PROXY_PASSWD, LM_DATE)
select * from TMP_POST_PROXY;

create table POST_MAIL
                  (
                     FLAG_SEND            VARCHAR(1) not null default 'N',
                     LM_DATE              DATETIME not null,
                     NOTIFY_EMAIL         VARCHAR(64),
                     NOTIFY_SUBJ          VARCHAR(255),
                     primary key (FLAG_SEND)
                  );

insert into POST_MAIL(FLAG_SEND, LM_DATE, NOTIFY_EMAIL, NOTIFY_SUBJ)
select * from POST_MAIL;


create table POST_TRACK
                  (
                     TRACK_ID             VARCHAR(14) not null,
                     TRACK_NAME           VARCHAR(64) not null,
                     FLAG_CHECK           VARCHAR(1) not null default 'Y',
                     TRACK_DATE           DATETIME not null,
                     LM_DATE              DATETIME not null,
                     primary key (TRACK_ID)
                  );

insert into POST_TRACK(TRACK_ID, TRACK_NAME, FLAG_CHECK, TRACK_DATE, LM_DATE)
select * from TMP_POST_TRACK;


create table POST_TRACKINFO
                  (
                     TRACK_ID             VARCHAR(14) not null,
                     OPER_DATE            DATETIME not null,
                     OPER_TYPE            INT(10) not null,
                     OPER_NAME            VARCHAR(64) not null,
                     ATTRIB_ID            INT(10),
                     ATTRIB_NAME          VARCHAR(64),
                     OPER_POSTCODE        INT(10),
                     OPER_POSTPLACE       VARCHAR(64) not null,
                     ITEM_WEIGHT          DECIMAL(10,6),
                     DECLARED_VALUE       DECIMAL(10,6),
                     DELIVERY_PRICE       DECIMAL(10,6),
                     DESTINATION_POSTCODE INT(10),
                     DELIVERY_ADDRESS     VARCHAR(255),
                     LM_DATE              DATETIME not null,
                     primary key (TRACK_ID, OPER_DATE)
                  );

insert into POST_TRACKINFO(TRACK_ID, OPER_DATE, OPER_TYPE, OPER_NAME, ATTRIB_ID, ATTRIB_NAME, OPER_POSTCODE, OPER_POSTPLACE, ITEM_WEIGHT, DECLARED_VALUE, DELIVERY_PRICE, DESTINATION_POSTCODE, DELIVERY_ADDRESS, LM_DATE)
select * from TMP_POST_TRACKINFO;
 
остальное постараюсь сделать в ближайшее время.

Re: Модуль отслеживания посылок

Добавлено: Чт дек 19, 2013 5:19 am
Amarok
LutsenkoDenis писал(а):код по очистке данных таблиц с сохранением данных во временный таблицах.
А что с ним делать?
LutsenkoDenis писал(а):остальное постараюсь сделать в ближайшее время.
Сортировка заработает? УРА! :)

Re: Модуль отслеживания посылок

Добавлено: Чт дек 19, 2013 8:23 am
LutsenkoDenis
Новый релиз будет сегодня-завтра, ну самый край в выходные.
Проверить работоспособность не получается, т.к. не могу никак настроить удалённую отладку(xdebug) ;-(
А выкладывать релиз не проверив как-то не очень хочется.

Re: Модуль отслеживания посылок

Добавлено: Сб дек 21, 2013 9:20 pm
LutsenkoDenis