Subject Re: [firebird-support] Operating System Directive Createfile failed
Author Helen Borrie
At 06:39 AM 24/05/2006, you wrote:
>I get the error "Operating System Directive Createfile failed" when
>opening a Firebird database. I have tried looking this error up on
>the internet and was not able to find anything that would help. The
>user accessing the database does have read/write permissions on the
>directory where the database resides.

Unless your appl is creating the database, permissions on the
database directory are not the issue here. If the database exists
and can sometimes be opened, the I/O error doesn't concern the database file.

The "user accessing the database" (from the POV of the operating
system) will be (by default installation settings for services) the
OS user 'firebird" on Linux or 'localsystem' on Windows. On Linux
that user also needs execute permissions on any directory in which it
is likely to create a file.

However --
On Windows, if you are running the Firebird server as an application
(this includes Fb embedded), the logged-in OS user will be the owner
of the server process and filesystem permissions would then apply to
anything the server had to create in the filesystem.

On Linux if you are running Classic and connecting locally then,
again, the logged-in OS user owns the process and you will bump into
FS permissions.

>This error does not occur
>everytime we attempt to open the database. Can someone tell what file
>is being created when Firebird starts and in which system directory?

In the Firebird root directory, the server creates various files at
startup - '.LCK'
files in some cases; 'firebird.log' if it doesn't already exist, etc.
>And what else could be causing this error to occur intermittently on
>the same pc?

If the firebird.log file is being deleted intermittently then the
server will have to recreate it next time it wants to write a log
record. Maybe you have some cron job (or batchfile) that deletes the
log? And there is a permissions problem preventing the
recreation...or whatever.

If memory resources are low, the server will also use the disk to
hold sort files. Of course, it needs to create these files. Maybe
your data access layer does some kind of ordered query on the system
tables when a client logs in. If you haven't configured some disk
space for this it will try to use the /tmp directory (Linux) or, on
Windows, whatever directory is configured as the TEMP directory. If
disk resources are also marginal, and the server can't find enough
space there to write the sort files, you could get an I/O error
then. Likewise if you don't have a TEMP directory configured on the OS at all.

But really you have given us a needle in a haystack - no indication
of your operating system platform, Fb server model, environment, or
what kind of connection is being attempted.