Firebird + Lazarus

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Dem
незнакомец
Сообщения: 8
Зарегистрирован: 30.08.2010 16:28:06

Firebird + Lazarus

Сообщение Dem »

Доброго времени.

Подскажите начинающему програмировать в Linux

Сабж:

Попытка подключения к базе выдает следующее: (во вложении)

права менял.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
vay1
новенький
Сообщения: 10
Зарегистрирован: 30.08.2010 16:15:31

Сообщение vay1 »

permission denied - значит что нет доступа. Значит либо открыт файл бд еще кем то в монопольном режиме, либо у тебя просто нет прав на тот файлкаталог

Добавлено спустя 1 минуту 13 секунд:
я обычно проверяю сначала доступность и работоспособность бд с помощью программы flamerobin :)
Dem
незнакомец
Сообщения: 8
Зарегистрирован: 30.08.2010 16:28:06

Сообщение Dem »

vay1 писал(а):permission denied - значит что нет доступа
- это понятно :), но не понятно почему.

vay1 писал(а):Значит либо открыт файл бд еще кем то в монопольном режиме
- 100% нет. не открыт.

vay1 писал(а):либо у тебя просто нет прав на тот файлкаталог
- менял права для пользователя/группы на "firebird" - не помогло/

vay1 писал(а):я обычно проверяю сначала доступность и работоспособность бд с помощью программы flamerobin
- робин тоже не открывает.

P.S. - база 100% рабочая.

лог робина:

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

*** IBPP::SQLException ***
Context: Database::Connect
Message: isc_attach_database failed

SQL Message : -902
Unsuccessful execution caused by a system error that precludes
successful execution of subsequent statements

Engine Code    : 335544344
Engine Message :
I/O error for file "/home/nik/Code/samples/firebird/warranty.fdb"
Error while trying to open file
Permission denied
Аватара пользователя
Brainenjii
энтузиаст
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Сообщение Brainenjii »

лучший способ, ИМХО, скопировать файл туда, где лежат дефолтные базы Firebird'a. Например, при установке с сайта Firebird - /opt/firebird; в OpenSUSE при установке из репозитариев базы лежат в /var/lib/firebird/data
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Dem
У меня была такая же фигня. Это связано с правами самого сервера. Надо права на файл выставлять такие же, с которыми запускается сервер. Если не заморачиваться, то можно просто выставить права 0777, то есть "для всех", тогда база нормально откроется.
SeventhSon
новенький
Сообщения: 56
Зарегистрирован: 17.02.2009 00:57:17

Сообщение SeventhSon »

в MidnightCommander посмотри права на доступ к файлу БД.Владельцем файла назначь пользователя:группу firebird:firebird
ну и на саму папку где лежит файл БД фаербёрду надо дать полные права
Ustas
постоялец
Сообщения: 153
Зарегистрирован: 19.10.2009 14:58:10
Откуда: г.Муром

Сообщение Ustas »

Всем привет!
Не стал создавать новую тему - это подходит.
Итак: Windows 7, Laserus 1.6, Firebird 2.5.4.
В последнее время, в рабочей программе заметил глюк: в Firebird поле типа DATE игнорирует значение null. Другие значение нормально сохраняются.

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

...
SQLQueryWork.SQL.Add('UPDATE TECHNS');
...
SQLQueryWork.SQL.Add('DATE_CLOSE = :DATE_CLOSE');
...
SQLQueryWork.Params.ParamByName('DATE_CLOSE').IsNull
...

Что могло произойти?
PapaNT
постоялец
Сообщения: 167
Зарегистрирован: 11.09.2009 12:06:46
Откуда: Москва

Сообщение PapaNT »

ls -la в консоли набери из /home/nik/Code/samples/firebird/, а потом посмотри на права для пользователя от имени которого идет обращение к файлам БД.
Аватара пользователя
*Rik*
постоялец
Сообщения: 453
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал
Контактная информация:

Сообщение *Rik* »

Ustas писал(а):Всем привет!
Не стал создавать новую тему - это подходит.
Итак: Windows 7, Laserus 1.6, Firebird 2.5.4.
В последнее время, в рабочей программе заметил глюк: в Firebird поле типа DATE игнорирует значение null. Другие значение нормально сохраняются.

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

...
SQLQueryWork.SQL.Add('UPDATE TECHNS');
...
SQLQueryWork.SQL.Add('DATE_CLOSE = :DATE_CLOSE');
...
SQLQueryWork.Params.ParamByName('DATE_CLOSE').IsNull
...

Что могло произойти?

Зачем там эта строка?
SQLQueryWork.Params.ParamByName('DATE_CLOSE').IsNull

Это свойство которое проверяет пустой ли параметр, если в параметре Null оно возвращает True.


Если Вам нужно очистить значение, используйте

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

SQLQueryWork.Params.ParamByName('DATE_CLOSE').Clear
Ustas
постоялец
Сообщения: 153
Зарегистрирован: 19.10.2009 14:58:10
Откуда: г.Муром

Сообщение Ustas »

*Rik* писал(а):Зачем там эта строка?
SQLQueryWork.Params.ParamByName('DATE_CLOSE').IsNull

Это свойство которое проверяет пустой ли параметр, если в параметре Null оно возвращает True.


Если Вам нужно очистить значение, используйте

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

SQLQueryWork.Params.ParamByName('DATE_CLOSE').Clear


Я же говорю, рабочий код... был.
а почему:

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

SQLQueryWork.Params.ParamByName('DATE_CLOSE').IsNull
- честно говоря, не помню.
Но вариант:

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

SQLQueryWork.Params.ParamByName('DATE_CLOSE').Clear
тоже не работатет.
slyubez
постоялец
Сообщения: 185
Зарегистрирован: 31.03.2015 07:44:07

Сообщение slyubez »

в Firebird поле типа DATE игнорирует значение null.

С типом Date и методами AsDate у меня постоянно проблемы, поэтому я уже давно из-за этого стараюсь вместо Date использовать Timestamp.
Ustas
постоялец
Сообщения: 153
Зарегистрирован: 19.10.2009 14:58:10
Откуда: г.Муром

Сообщение Ustas »

slyubez писал(а):
в Firebird поле типа DATE игнорирует значение null.

С типом Date и методами AsDate у меня постоянно проблемы, поэтому я уже давно из-за этого стараюсь вместо Date использовать Timestamp.

В IBExpert нормально все пишется

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

update techns set date_close = null where id = 1

Косяк где то в компонентах Lazarus.
Тогда вопрос: используя тип Timestamp, кокой метод используется в Lazarus?

P.S. Поставил Firebird-2.5.5 - все заработало, и .IsNull и .Clear.
Аватара пользователя
*Rik*
постоялец
Сообщения: 453
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал
Контактная информация:

Сообщение *Rik* »

Ustas писал(а):
slyubez писал(а):
в Firebird поле типа DATE игнорирует значение null.

С типом Date и методами AsDate у меня постоянно проблемы, поэтому я уже давно из-за этого стараюсь вместо Date использовать Timestamp.

В IBExpert нормально все пишется

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

update techns set date_close = null where id = 1

Косяк где то в компонентах Lazarus.
Тогда вопрос: используя тип Timestamp, кокой метод используется в Lazarus?

P.S. Поставил Firebird-2.5.5 - все заработало, и .IsNull и .Clear.

В смысле какой метод? Все тоже самое как с Date, но следует понимать, что при TimeStamp вы не сможете выбрать записи принадлежащие одному дню просто запросом

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

WHERE DATA = :MYDATE

Придется писать

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

WHERE DATA >= :DATEBEGIN AND DATA <= :DATEEND
Где DATEBEGIN должен содержать дату и время начала дня, а DATEEND дату и время конца дня.
Ustas
постоялец
Сообщения: 153
Зарегистрирован: 19.10.2009 14:58:10
Откуда: г.Муром

Сообщение Ustas »

*Rik* писал(а):В смысле какой метод? Все тоже самое как с Date

Я имел ввиду:

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

SQLQueryWork.Params.ParamByName('DATE_CLOSE').AsDate
или

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

SQLQueryWork.Params.ParamByName('DATE_CLOSE').AsDateTime
Аватара пользователя
*Rik*
постоялец
Сообщения: 453
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал
Контактная информация:

Сообщение *Rik* »

Ustas писал(а):
*Rik* писал(а):В смысле какой метод? Все тоже самое как с Date

Я имел ввиду:

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

SQLQueryWork.Params.ParamByName('DATE_CLOSE').AsDate
или

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

SQLQueryWork.Params.ParamByName('DATE_CLOSE').AsDateTime

Если Вас миллисекунды не волнуют, то без разницы, AsDate и AsDateTime оба работают как DateTime, только когда к параметру обращаются как AsDateTime он ещё миллисекунды тащит.
Ответить