Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Спасти базу, преобразование даты varchar-timestamp  [new]
PATRI0T
Member

Откуда: Майкоп
Сообщений: 107
ДОбрый день.. ССЗБ, короче..

Есть таблица и в ней поле Varchar(20). Туда писал дату-время, но строкой (аля timestamp).
Потом понял, что ошибся, попробовал изменить тип поля поле на timestamp - получилось (через ibexpert)

Но что-то пошло не так и теперь табличка нечитабельна..
ODBC и IBExpert говорят ошибку

conversion error from string ""

Как исправить?
15 авг 19, 13:48    [21950082]     Ответить | Цитировать Сообщить модератору
 Re: Спасти базу, преобразование даты varchar-timestamp  [new]
WildSery
Member

Откуда: да, оттуда.
Сообщений: 16403
PATRI0T,

Поменять назад, создать новое поле, залить туда дату апдейтом, старое удалить.
15 авг 19, 13:51    [21950084]     Ответить | Цитировать Сообщить модератору
 Re: Спасти базу, преобразование даты varchar-timestamp  [new]
PATRI0T
Member

Откуда: Майкоп
Сообщений: 107
спасибо. буду сейчас пробовать.
Пока нашел, что проблема только в одной записи.. Думал, может ее обнулить, но не получилось

update orders o
    set o.fact_date_export_itm = null
where o.id =7435

>>Overflow occurred during data type conversion.
conversion error from string "".
15 авг 19, 13:54    [21950090]     Ответить | Цитировать Сообщить модератору
 Re: Спасти базу, преобразование даты varchar-timestamp  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 48163

update поле=cast(coalesce(поле, '2000-01-01') as timestamp)

Posted via ActualForum NNTP Server 1.5

15 авг 19, 13:55    [21950093]     Ответить | Цитировать Сообщить модератору
 Re: Спасти базу, преобразование даты varchar-timestamp  [new]
PATRI0T
Member

Откуда: Майкоп
Сообщений: 107
Dimitry Sibiryakov,

спасибо, но нет.. тоже самое..
update orders o
    set o.fact_date_export_itm = cast(coalesce(fact_date_export_itm, '2000-01-01') as timestamp)
where o.id =7435

>>Overflow occurred during data type conversion.
conversion error from string "".
15 авг 19, 13:58    [21950096]     Ответить | Цитировать Сообщить модератору
 Re: Спасти базу, преобразование даты varchar-timestamp  [new]
PATRI0T
Member

Откуда: Майкоп
Сообщений: 107
автор
Поменять назад, создать новое поле, залить туда дату апдейтом, старое удалить

Обратно не дает...
автор
this operation is not defined for system tables. unsuccessful metadata update Orders.
Implementation of text subtypa 65332 not located
15 авг 19, 14:02    [21950102]     Ответить | Цитировать Сообщить модератору
 Re: Спасти базу, преобразование даты varchar-timestamp  [new]
PATRI0T
Member

Откуда: Майкоп
Сообщений: 107
че за дичь..
Что я наделал...
15 авг 19, 14:03    [21950103]     Ответить | Цитировать Сообщить модератору
 Re: Спасти базу, преобразование даты varchar-timestamp  [new]
m7m
Member

Откуда: Украина, Мариуполь
Сообщений: 1347
PATRI0T
Dimitry Sibiryakov,

спасибо, но нет.. тоже самое..
update orders o
    set o.fact_date_export_itm = cast(coalesce(fact_date_export_itm, '2000-01-01') as timestamp)
where o.id =7435

>>Overflow occurred during data type conversion.
conversion error from string "".

Пустая строка там у тебя а не null и соответственно coalesce не поможет
и если я правильно понимаю что o.id это PK
то как-то так
update orders o
    set o.fact_date_export_itm = cast('2000-01-01' as timestamp)
where o.id =7435
15 авг 19, 14:05    [21950106]     Ответить | Цитировать Сообщить модератору
 Re: Спасти базу, преобразование даты varchar-timestamp  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 30321

CAST не нужен.
fact_date_export_itm = timestamp '2000-01-01'

Posted via ActualForum NNTP Server 1.5

15 авг 19, 14:07    [21950108]     Ответить | Цитировать Сообщить модератору
 Re: Спасти базу, преобразование даты varchar-timestamp  [new]
PATRI0T
Member

Откуда: Майкоп
Сообщений: 107
Мимопроходящий - все тоже самое..


в Ibexpert сделал проверку базы.
Отмечена только последняя галка (Validate Database + Validate Full)
Summary of validation errors 
 
	Number of record level errors	: 1 

IBE: Validation completed.
15 авг 19, 14:13    [21950115]     Ответить | Цитировать Сообщить модератору
 Re: Спасти базу, преобразование даты varchar-timestamp  [new]
PATRI0T
Member

Откуда: Майкоп
Сообщений: 107
PATRI0T,

Firebird.log
ITM (Server) Thu Aug 15 14:09:58 2019
Database: F:\WORK\FIREBIRD DB\SOLO.FDB
Relation has 4 orphan backversions (13 in use) in table ORDERS (128)
15 авг 19, 14:15    [21950117]     Ответить | Цитировать Сообщить модератору
 Re: Спасти базу, преобразование даты varchar-timestamp  [new]
hvlad
Member

Откуда:
Сообщений: 10531
PATRI0T
Обратно не дает...
автор
this operation is not defined for system tables. unsuccessful metadata update Orders.
Implementation of text subtypa 65332 not located
Где
- текст запроса ?
- версия сервера ?
15 авг 19, 14:37    [21950134]     Ответить | Цитировать Сообщить модератору
 Re: Спасти базу, преобразование даты varchar-timestamp  [new]
PATRI0T
Member

Откуда: Майкоп
Сообщений: 107
hvlad, делал из морды ibexpert
ПОтом попробовал запросом
alter table orders
    alter column fact_date_export_itm type varchar(30);

Все равно одно и тоже
версия сервера по данным ibexpert "WI-V6.3.1.26351 Firebird 2.5"
15 авг 19, 14:43    [21950143]     Ответить | Цитировать Сообщить модератору
 Re: Спасти базу, преобразование даты varchar-timestamp  [new]
hvlad
Member

Откуда:
Сообщений: 10531
В isql выполни и покажи тут:

show table <твоя таблица>;

select rdb$relation_id from rdb$relations where rdb$relation_name = <твоя таблица в верхнем регистре>;

set blob all;

select * from rdb$formats where rdb$relation_id = <id твоей таблицы>;
15 авг 19, 14:46    [21950148]     Ответить | Цитировать Сообщить модератору
 Re: Спасти базу, преобразование даты varchar-timestamp  [new]
PATRI0T
Member

Откуда: Майкоп
Сообщений: 107
Насколько я понял, там была пустая строка.. При преобразовании varchar->timestamp что-то пошло не так. Все отработало, а это зависло..
И обратно не дает.
15 авг 19, 14:46    [21950149]     Ответить | Цитировать Сообщить модератору
 Re: Спасти базу, преобразование даты varchar-timestamp  [new]
hvlad
Member

Откуда:
Сообщений: 10531
hvlad
В isql выполни и покажи тут:
И ещё
select rdb$field_id from rdb$relation_fields 
 where rdb$relation_name = 'ORDERS' and rdb$field_name = 'FACT_DATE_EXPORT_ITM';
15 авг 19, 14:52    [21950157]     Ответить | Цитировать Сообщить модератору
 Re: Спасти базу, преобразование даты varchar-timestamp  [new]
PATRI0T
Member

Откуда: Майкоп
Сообщений: 107
SQL> show table;
       CLIENTS                                EMPLOYERS
       IBE$LOG_BLOB_FIELDS                    IBE$LOG_FIELDS
       IBE$LOG_KEYS                           IBE$LOG_TABLES
       IBE$PARAMS_HISTORY                     IBE$TODO
       IBE$VERSION_HISTORY                    JOURNAL_CASHFLOW
       JOURNAL_LACK                           JOURNAL_LKM
       JOURNAL_OUT                            JOURNAL_SHLIF
       JOURNAL_UPACK                          LIST_OUT_TYPE
       LIST_PAY_TYPE                          LIST_PRICELIST
       LIST_STATUSES                          NOMENCLATURE
       ORDERS                                 ORDERS_DATE_PLAN
       ORDERS_ELEMENTS                        ORDERS_RESTORE
       ORDERS_RESTORE2                        ORDER_STATUSES
       PAYMENTS                               PRICE_EMAL_ZEROCOST
       PRICE_EQUAL_PRICE                      PRICE_LIST

-- Не знаю почему, но тут ошибка.. не видит её ни в какую. При этом select * from rdb$relations выдает все, и глазами находится ид=128
SQL> select rdb$relation_id from rdb$relations where rdb$relation_name = ORDERS;
Statement failed, SQLSTATE = 42S22
Dynamic SQL Error
-SQL error code = -206
-Column unknown
-ORDERS
-At line 1, column 69


SQL> select * from rdb$formats where rdb$relation_id =128;
RDB$RELATION_ID RDB$FORMAT    RDB$DESCRIPTOR
=============== ========== =================
            128          1               8:0
==============================================================================
RDB$DESCRIPTOR:
BLOB display set to subtype 1. This BLOB: subtype = 6
==============================================================================
15 авг 19, 15:03    [21950171]     Ответить | Цитировать Сообщить модератору
 Re: Спасти базу, преобразование даты varchar-timestamp  [new]
PATRI0T
Member

Откуда: Майкоп
Сообщений: 107
SQL> select rdb$field_id from rdb$relation_fields
CON>  where rdb$relation_name = 'ORDERS' and rdb$field_name = 'FACT_DATE_EXPORT_ITM';

RDB$FIELD_ID
============
          38
15 авг 19, 15:03    [21950173]     Ответить | Цитировать Сообщить модератору
 Re: Спасти базу, преобразование даты varchar-timestamp  [new]
PATRI0T
Member

Откуда: Майкоп
Сообщений: 107
Простите, видимо нервы...все нормально там...

SQL> select rdb$relation_id from rdb$relations where rdb$relation_name = 'ORDERS';

RDB$RELATION_ID
===============
128
[/SRC]
15 авг 19, 15:05    [21950177]     Ответить | Цитировать Сообщить модератору
 Re: Спасти базу, преобразование даты varchar-timestamp  [new]
o_v_a
Member

Откуда: Тула
Сообщений: 1063
PATRI0T
SQL> select rdb$relation_id from rdb$relations where rdb$relation_name = ORDERS;
Statement failed, SQLSTATE = 42S22
Dynamic SQL Error
-SQL error code = -206
-Column unknown
-ORDERS
-At line 1, column 69

В апострофы ORDERS кто будет заключать?
15 авг 19, 15:15    [21950192]     Ответить | Цитировать Сообщить модератору
 Re: Спасти базу, преобразование даты varchar-timestamp  [new]
PATRI0T
Member

Откуда: Майкоп
Сообщений: 107
o_v_a, да, затупил. Уже увидел, исправился и извинился)
15 авг 19, 15:17    [21950195]     Ответить | Цитировать Сообщить модератору
 Re: Спасти базу, преобразование даты varchar-timestamp  [new]
hvlad
Member

Откуда:
Сообщений: 10531
PATRI0T
SQL> select * from rdb$formats where rdb$relation_id =128;
RDB$RELATION_ID RDB$FORMAT    RDB$DESCRIPTOR
=============== ========== =================
            128          1               8:0
==============================================================================
RDB$DESCRIPTOR:
BLOB display set to subtype 1. This BLOB: subtype = 6
==============================================================================
SET BLOB ALL - так заметно ?
:)
15 авг 19, 15:20    [21950200]     Ответить | Цитировать Сообщить модератору
 Re: Спасти базу, преобразование даты varchar-timestamp  [new]
hvlad
Member

Откуда:
Сообщений: 10531
PATRI0T
SQL> show table;
       CLIENTS     
Хватит паниковать уже.
Я просил show table orders, а не это
15 авг 19, 15:23    [21950206]     Ответить | Цитировать Сообщить модератору
 Re: Спасти базу, преобразование даты varchar-timestamp  [new]
PATRI0T
Member

Откуда: Майкоп
Сообщений: 107
Заметно :) Я ее не забыл, просто она молча выполнилась, и я ее не скопировал.
Вот еще раз все подряд пачкой


SQL> show table;
       CLIENTS                                EMPLOYERS
       IBE$LOG_BLOB_FIELDS                    IBE$LOG_FIELDS
       IBE$LOG_KEYS                           IBE$LOG_TABLES
       IBE$PARAMS_HISTORY                     IBE$TODO
       IBE$VERSION_HISTORY                    JOURNAL_CASHFLOW
       JOURNAL_LACK                           JOURNAL_LKM
       JOURNAL_OUT                            JOURNAL_SHLIF
       JOURNAL_UPACK                          LIST_OUT_TYPE
       LIST_PAY_TYPE                          LIST_PRICELIST
       LIST_STATUSES                          NOMENCLATURE
       ORDERS                                 ORDERS_DATE_PLAN
       ORDERS_ELEMENTS                        ORDERS_RESTORE
       ORDERS_RESTORE2                        ORDER_STATUSES
       PAYMENTS                               PRICE_EMAL_ZEROCOST
       PRICE_EQUAL_PRICE                      PRICE_LIST

SQL> select rdb$relation_id from rdb$relations where rdb$relation_name = 'ORDERS';

RDB$RELATION_ID
===============
            128

SQL> set blob all;
SQL> select * from rdb$formats where rdb$relation_id = 128;

RDB$RELATION_ID RDB$FORMAT    RDB$DESCRIPTOR
=============== ========== =================
            128          1               8:0
==============================================================================
RDB$DESCRIPTOR:
                    8: type=3 (VARCHAR) length=32 sub_type=52 flags=0x0
                   40: type=3 (VARCHAR) length=32 sub_type=52 flags=0x0
                   72: type=3 (VARCHAR) length=72 sub_type=52 flags=0x0
                  144: type=3 (VARCHAR) length=32 sub_type=52 flags=0x0
                  176: type=3 (VARCHAR) length=32 sub_type=52 flags=0x0
                  208: type=9 (LONG) length=4 sub_type=0 flags=0x0
                  212: type=9 (LONG) length=4 sub_type=0 flags=0x0
                  216: type=3 (VARCHAR) length=52 sub_type=52 flags=0x0
                  268: type=3 (VARCHAR) length=52 sub_type=52 flags=0x0
                  320: type=3 (VARCHAR) length=52 sub_type=52 flags=0x0
                  372: type=3 (VARCHAR) length=52 sub_type=52 flags=0x0
                  424: type=3 (VARCHAR) length=52 sub_type=52 flags=0x0
                  476: type=11 (FLOAT) length=4 sub_type=0 flags=0x0
                  480: type=11 (FLOAT) length=4 sub_type=0 flags=0x0
                  484: type=3 (VARCHAR) length=52 sub_type=52 flags=0x0
                  536: type=9 (LONG) length=4 sub_type=0 flags=0x0
                  540: type=9 (LONG) length=4 sub_type=0 flags=0x0
                  544: type=11 (FLOAT) length=4 sub_type=0 flags=0x0
                  548: type=9 (LONG) length=4 sub_type=0 flags=0x0
                  552: type=9 (LONG) length=4 sub_type=0 flags=0x0
                  556: type=3 (VARCHAR) length=52 sub_type=52 flags=0x0
                  608: type=9 (LONG) length=4 sub_type=0 flags=0x0
                  612: type=9 (LONG) length=4 sub_type=0 flags=0x0
                  616: type=3 (VARCHAR) length=52 sub_type=52 flags=0x0
                  668: type=3 (VARCHAR) length=52 sub_type=52 flags=0x0
                  720: type=3 (VARCHAR) length=102 sub_type=52 flags=0x0
                  822: type=3 (VARCHAR) length=102 sub_type=52 flags=0x0
                  924: type=3 (VARCHAR) length=102 sub_type=52 flags=0x0
                 1026: type=3 (VARCHAR) length=302 sub_type=52 flags=0x0
                 1328: type=3 (VARCHAR) length=22 sub_type=52 flags=0x0
                 1350: type=3 (VARCHAR) length=22 sub_type=0 flags=0x0
                 1372: type=3 (VARCHAR) length=22 sub_type=0 flags=0x0
                 1394: type=3 (VARCHAR) length=22 sub_type=0 flags=0x0
                 1416: type=3 (VARCHAR) length=22 sub_type=0 flags=0x0
                 1438: type=3 (VARCHAR) length=22 sub_type=52 flags=0x0
                 1460: type=3 (VARCHAR) length=22 sub_type=52 flags=0x0
                 1482: type=8 (SHORT) length=2 sub_type=0 flags=0x0
                 1484: type=3 (VARCHAR) length=22 sub_type=52 flags=0x0
                 1506: type=3 (VARCHAR) length=22 sub_type=52 flags=0x0
                 1528: type=3 (VARCHAR) length=22 sub_type=52 flags=0x0
                 1550: type=3 (VARCHAR) length=22 sub_type=52 flags=0x0
                 1572: type=3 (VARCHAR) length=302 sub_type=52 flags=0x0
                 1874: type=3 (VARCHAR) length=22 sub_type=52 flags=0x0
                 1896: type=3 (VARCHAR) length=22 sub_type=52 flags=0x0
                 1918: type=3 (VARCHAR) length=103 sub_type=52 flags=0x0

==============================================================================

SQL> select rdb$field_id from rdb$relation_fields  where rdb$relation_name = 'ORDERS' and rdb$field_name = 'FACT_DATE_EXPORT_ITM';

RDB$FIELD_ID
============
          38
15 авг 19, 15:29    [21950215]     Ответить | Цитировать Сообщить модератору
 Re: Спасти базу, преобразование даты varchar-timestamp  [new]
PATRI0T
Member

Откуда: Майкоп
Сообщений: 107
SQL> show table ORDERS;
ID                              INTEGER Not Null
MANAGER                         VARCHAR(30) Nullable
CLIENT                          VARCHAR(30) Nullable
ORDERNUM                        VARCHAR(70) Nullable
ITM_ORDERNUM                    VARCHAR(100) Nullable
FASAD_MAT                       VARCHAR(30) Nullable
FASAD_MODEL                     VARCHAR(30) Nullable
FASAD_PG_WIDTH                  INTEGER Nullable
TEXTURE                         VARCHAR(50) Nullable
FIL_MAT                         VARCHAR(50) Nullable
FIL_MODEL                       VARCHAR(50) Nullable
COLOR                           VARCHAR(100) Nullable
FIL_COLOR                       VARCHAR(50) Nullable
COLOR_TYPE                      VARCHAR(50) Nullable
COLOR_LAK                       VARCHAR(50) Nullable
COLOR_PATINA                    VARCHAR(100) Nullable
ORDER_GENERALSQ                 FLOAT Nullable
ORDER_FASADSQ                   FLOAT Nullable
GLASS                           VARCHAR(50) Nullable
PRIMECH                         VARCHAR(300) Nullable
ORDER_COST_PRICECOLUMN          SMALLINT Nullable
ORDER_COST                      INTEGER Nullable
ORDER_PAY                       INTEGER Nullable
ORDER_TOTAL_COST                INTEGER Nullable
ORDER_DISCOUNT                  INTEGER Nullable
ORDER_COST_PACK                 INTEGER Nullable
ORDER_COST_GLASS                INTEGER Nullable
FACT_DATE_RECEIVE               VARCHAR(20) Nullable
FACT_DATE_FIRSTSAVE             VARCHAR(20) Nullable
FACT_DATE_LASTSAVE              VARCHAR(20) Nullable
FACT_DATE_CALCCOST              VARCHAR(20) Nullable
FACT_DATE_EXPORT_ITM            VARCHAR(20) Nullable
PLAN_DATE_FIRSTSTAGE            VARCHAR(20) CHARACTER SET NONE Nullable
PLAN_DATE_PACK                  VARCHAR(20) CHARACTER SET NONE Nullable
FACT_DATE_PACK                  VARCHAR(20) CHARACTER SET NONE Nullable
FACT_DATE_ORDER_OUT             VARCHAR(20) CHARACTER SET NONE Nullable
ORDER_STATUS                    FLOAT Nullable
FACT_DATE_ORDER_CANCEL          VARCHAR(20) Nullable
REASON_ORDER_CANCEL             VARCHAR(300) Nullable
USER_ORDER_CANCELED             VARCHAR(20) Nullable
ORDER_TYPE                      VARCHAR(20) Nullable
TEXTURE_COMMENT                 VARCHAR(50) Nullable
COLOR_LAK_COMMENT               VARCHAR(50) Nullable
COLOR_PATINA_COMMENT            VARCHAR(101) Nullable
PRISAD                          VARCHAR(20) Nullable
CONSTRAINT FK_ORDERS_1:
  Foreign key (ORDER_STATUS)    References LIST_STATUSES (STATUS_NUM)
CONSTRAINT PK_ORDERS:
  Primary key (ID)
CONSTRAINT UNQ1_ORDERS:
  Unique key (ITM_ORDERNUM)

Triggers on Table ORDERS:
ORDERS_BI, Sequence: 0, Type: BEFORE INSERT, Active
SQL>
15 авг 19, 15:30    [21950216]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Firebird, InterBase Ответить