Subject Re: [firebird-support] "No message for error code 335544854 found."
Author Helen Borrie
At 04:54 AM 21/05/2007, you wrote:
>Greeting all,
>
>First let me describe my programming system:
>
>Intel 2.3g Dual
>Windows 2000
>Visual Studio 2005 Using C#
>dot.Net Framework 2.0
>FirebirdClient ADO.NET 2.0 Data provider
>Firebird 2.0
>Fedora Core 4
>FlameRobin 0.7.6
>
>I am writing a program with the option to install the database on a
>Linux/Windows Server or locally using an embedded database.
>The
>program utilizes a login with the options to select the location of
>the Firebird database to use. The database was created using
>FlameRobin and a copy of the same database is used in all three scenarios.
>
>I can connect to each of the three databases with no problem but when
>the program queries the database to see if the person logging in exist
>in the user table, the embedded database throws an exception an
>displays a dialog box with the error" "No message for error code
>335544854 found."

That is the error at the top of the
stack: 335544854|charset_not_installed|CHARACTER SET %s is not installed

>Searching the web for the cause of this error
>returns little help other than suggestions to make sure the
>firebird.msg file is in the application directory. (which I presume
>should display the message for the error).

For embedded, firebird.msg has to be in the top-level directory,
where your executable and your renamed fbembed.dll are located.


>I have verified that the FirebirdClient dll's, config & msg files,
>including those in the intl directory, are present in the
>program\bin\Debug directory and that I have the necessary permissions.
>The program executable is also present.

Have you studied the installation notes in the release notes
regarding the relative locations of things for an embedded
install? All of the intl stuff should be in ..\intl\beneath the
directory where the executable and the embedded client are located.

>The connectString used is:
>"ServerType=1;User=SYSDBA;Password=masterkey;Database=C:\\Projects\\ProgramName\\ProgramName\\bin\\Debug\\MMM.FDB;

Check with the firebird-net-provider list regarding the connection
attributes and formats for an embedded connection.


>Recap:
>I can connect to the database on each of the target machines but I can
>only execute the login query "SELECT USERNAME, PASSWD FROM USERS
>WHERE USERNAME = 'admin' AND PASSWD ='password'" using the Linux and
>Windows Client/Server databases and FlameRobin.
>Attempts to execute the query
>on the embedded database results in the error: "No message for error
>code 335544854 found." The same code is executed after a successful
>connection to the database regardless of the database location.

This all seems very confused. One cannot tell whether you are
complaining about not being able to connect to a security2.fdb
located on a remote Firebird 2 server, using the renamed fbembed.dll
as your (remote) client; or whether you think the USERS view should
be in MMM.FDB. You have not even mentioned a connection string
relating to a copy of security2.fdb, which is where the USERS view is located.

If you are talking about using the renamed fbembed.dll as the
stand-alone client/server library then security2.fdb is
irrelevant. In connecting the embedded client to the embedded
server, the security database is not visited.

Furthermore, even if you are trying to make your embedded app read
some local copy of security2.fdb that you might wish the embedded
server to connect to as though it were an ordinary database, it would
not be possible to establish any of the privileges required to read
either the USERS view or the underlying RDB$USERS database. The
privileges attached to the objects in security2.fdb are such that
SYSDBA can access them entirely, but other users can read only their
own record from the USERS view. The embedded client does not pass any
username or password. Thus, even if the embedded client connects via
the embedded server to some copy of security2.fbk, none of the
database objects is available to that client.

However, the error that is filtering out to the top of the error
stack indicates that the embedded server cannot find either the
..\intl\ folder or firebird.msg in your embedded setup path....so not
understanding the security rules is likely to be just one of several
problems you have with this installation.

./heLen