|
|
|
alter table... и файербёрд умер
|
|||
|---|---|---|---|
|
#18+
использую fb 1.5. есть таблица вида: id integer not null (pk) name varchar(128) not null ... и ещё с десяток полей в таблице порядка 10000 записей делаю alter table sometable alter column name type varchar(80), после чего файербёрд сжирает все ресурсы системы и уходит в нирвану. полчаса я подождал для приличия, а потом прибил это дело. что бы сие могло значить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2004, 14:07:03 |
|
||
|
alter table... и файербёрд умер
|
|||
|---|---|---|---|
|
#18+
а разве можно уменьшать размер поля? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2004, 14:10:34 |
|
||
|
alter table... и файербёрд умер
|
|||
|---|---|---|---|
|
#18+
У меня только предположение, что работая с этой таблицей ты не завершил транзакции перед тем как делать alter table. Поэтому он не в нирване, а в ожидании. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2004, 14:14:58 |
|
||
|
alter table... и файербёрд умер
|
|||
|---|---|---|---|
|
#18+
Соглашусь с земляком, и с alex_k тоже согласен на 100 %, но по идее должны были отрезаться лишние поля и не более того, сделай статистику по базе и плиз в студию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2004, 15:08:30 |
|
||
|
alter table... и файербёрд умер
|
|||
|---|---|---|---|
|
#18+
проверил на поле в пустой таблице. да, действительно, выходит, что размер поля уменьшать нельзя :( (интересно почему?) собственно, мне это нужно, чтобы индекс построить по полю, а так как fb не хочет делать индексы по varchar c длиной больше 80 символов для collate = pxw_cyrl, то хотелось бы просто размер поля уменьшить до 80. и как это можно по другому сделать, не пересоздавая поля? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2004, 18:41:12 |
|
||
|
alter table... и файербёрд умер
|
|||
|---|---|---|---|
|
#18+
Посмотри тут Если все-таки нужно pxw, то в скрипте Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2004, 04:50:17 |
|
||
|
alter table... и файербёрд умер
|
|||
|---|---|---|---|
|
#18+
создать временное поле, в него перекинуть данные из старого поля, старое удалить и создать новое с нужной длиной, затем перекинуть данные в новое поле, временное поле удалить, всё. кстати обрезать не забывай до нужной длины... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2004, 08:41:07 |
|
||
|
alter table... и файербёрд умер
|
|||
|---|---|---|---|
|
#18+
вообще, мне кажется это неудобством. ладно если нельзя урезать поле при простом присваивании. но почему cast(somefield as varchar(xx)) не обрезает? ведь cast для того и придуман, чтобы типы приводить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2004, 09:34:06 |
|
||
|
alter table... и файербёрд умер
|
|||
|---|---|---|---|
|
#18+
alex_kвообще, мне кажется это неудобством. ладно если нельзя урезать поле при простом присваивании. но почему cast(somefield as varchar(xx)) не обрезает? Приведи свое понимание результата следующего выражения: Код: plaintext alex_kведь cast для того и придуман, чтобы типы приводить... Он приводит типы без потери данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2004, 09:59:00 |
|
||
|
alter table... и файербёрд умер
|
|||
|---|---|---|---|
|
#18+
57920 а если хочется с потерей данных? ну ясно, в общем. нет так нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2004, 10:07:04 |
|
||
|
alter table... и файербёрд умер
|
|||
|---|---|---|---|
|
#18+
alex_k57920 Вот так люди и вешаются на своих подтяжках после двух суток отладки такой хрени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2004, 10:28:35 |
|
||
|
alter table... и файербёрд умер
|
|||
|---|---|---|---|
|
#18+
Насчет уменьшения размера полей в пустой таблице делал все работает. Спомощью Alter. Не знаю как у тебя, но у меня в момент изменения на полях отсутствовали индексы, может по этому и неразрешает. По индексам была так же проблема. FB ругается не навеличину большую varchar(80), а на общий размер индекса. Индекс у тебя наверняка состовной. Просумируй размеры всех полей. В варчаре один символ - 1 байт, Integer - 4 байта и т.д. Вобщем я делал общий размер индекса не более примерно 190 байт. И вобще лучше не делай в PK или UIndex поля с типом varchar, очень медленно получится. Можно как попробовать каждому значению поля сделать в соответствии поле типа Integer. Наверняка так будет лучше тебе решать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2004, 10:47:56 |
|
||
|
alter table... и файербёрд умер
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. Поэтому возможно как вы и говорили с Alter может и не работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2004, 10:53:22 |
|
||
|
alter table... и файербёрд умер
|
|||
|---|---|---|---|
|
#18+
всем спасибо. через временное поле действительно можно извратиться и создать-таки индекс без потери данных. только, как выяснилось, он при запросе вида select * from sometable where upper(name) like '%sometext%' все равно не используется. а жаль ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2004, 12:31:07 |
|
||
|
alter table... и файербёрд умер
|
|||
|---|---|---|---|
|
#18+
guest38[индекс] при запросе вида select * from sometable where upper(name) like '%sometext%' все равно не используется. а жаль жаль конечно, но это и невозможно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2004, 12:34:40 |
|
||
|
alter table... и файербёрд умер
|
|||
|---|---|---|---|
|
#18+
На будущее изменить размер поля в таблице можно. Только через системные таблицы. Я работаю в IBExpert, если изменить его визуально, т.е. спопощью окон (глупо звучит), то он показывает скрипт изменения размера поля. Надо будет конечно немного по разбиратся, но проблема решаема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2004, 13:33:06 |
|
||
|
alter table... и файербёрд умер
|
|||
|---|---|---|---|
|
#18+
VKVНа будущее изменить размер поля в таблице можно. Только через системные таблицы. Я работаю в IBExpert, если изменить его визуально, т.е. спопощью окон (глупо звучит), то он показывает скрипт изменения размера поля. Надо будет конечно немного по разбиратся, но проблема решаема. да тут уже был один такой товарищ, который поменял размер поля через изменение содержимого системных таблиц... ничо хорошего не получил, только геморрой лишний... хотя можно и с помощью системных таблиц, но перед этим лучше сделать бэкап, и вообще делать такое не на рабочей БД... но всё это, ИМХО, изврат, я лучше через временное поле сделаю, надёжнее оно будет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2004, 13:37:06 |
|
||
|
alter table... и файербёрд умер
|
|||
|---|---|---|---|
|
#18+
VFя лучше через временное поле сделаю, надёжнее оно будет...Поддерживаю. "Лучше перебдеть, чем недобдеть", как говаривал классик. Соблазн поковыряться в системных таблицах велик. Особенно если есть инструмент, позволяющий это делать незадумываясь. Но давайте вспомним байку про обезьяну и гранату... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2004, 13:43:00 |
|
||
|
alter table... и файербёрд умер
|
|||
|---|---|---|---|
|
#18+
Людей всегла отпугивыет, то что они незнают и непонимают. Там нет ничего сложного, их создовали такие же люди как мы. Нужно немного времени и терпения, что бы с этим разобраться. А данные которые там содержатся очень полезны. Вобщем каждый решает сам, что он хочет добится и как он этого хочет добится. Присоединяю файл который содержит некоторую информацию о системных таблицах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2004, 14:31:23 |
|
||
|
alter table... и файербёрд умер
|
|||
|---|---|---|---|
|
#18+
VKVЛюдей всегла отпугивыет, то что они незнают и непонимают. Там нет ничего сложного, их создовали такие же люди как мы. Нужно немного времени и терпения, что бы с этим разобраться. А данные которые там содержатся очень полезны. Вобщем каждый решает сам, что он хочет добится и как он этого хочет добится. Присоединяю файл который содержит некоторую информацию о системных таблицах. ну и попробуй изменить размерность поля varchar с 512 до 255 через сист. таблицы, при условии, что есть данные размерностью больце 255 символов, а потом поделись впечетлениями... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2004, 14:41:28 |
|
||
|
alter table... и файербёрд умер
|
|||
|---|---|---|---|
|
#18+
Мне нравится твоя самоуверенность Только не стони потом, как этот товарищ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2004, 14:46:39 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=32600823&tid=1578265]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
25ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 198ms |
| total: | 327ms |

| 0 / 0 |
