 SQL database system |
Manual page for installing,(troubleshooting,)
Installing SHSQL
-
Download from shsql.sourceforge.net.
Software distribution directory can be located anywhere (user directory or system directory)
-
cd sqlsrc; make
gcc is required.
There are no library dependencies.
Any UID can be used to run the build.
The resulting executables will be put into ./bin
-
Add the shsql bin to your search PATH
Now you're ready to
create a SHSQL database.
Typical problems
Creates, joins, etc. not working.
shsql must be able to invoke its own executables, to do things such as
JOIN, CREATE, and MAINTAIN.
The shsql bin must be in your command PATH, or else
dbbin: must be defined in your
to the full path name of the bin directory where shsql executables reside.
project config file
(If you are doing CGI work, you must define dbbin, since CGI programs
don't have access to your command PATH).
Updates always getting the message "update refused"
The process attempting the update probably isn't owned by the same UID that owns the database,
or is having some other problem gaining access to the data file or lock file.
Database read waits indefinitely
Indicates that a .readlock file has been left in the ./locks directory
by a process. After verifying that it is invalid it may be removed.
Getting the message: "sql SELECT: 2000 row(s) retrieved, additional row(s) found but ignored (see MAXROWS)"
shsql starts out with an upper limit of 2000 rows. You can raise this by setting
dbmaxrows_select in your project config file
or on a query-by-query basis by adding maxrows = NNNNN at the end of the query.
This rule holds true for UPDATE and DELETE commands (the config attribute
is dbmaxrows_update for these).
Join not returning enough rows.
There may be issues with multiple rows sharing the same join key.
If so, use one of the other join types.
More info.
Slow retrieval from a larger table for which indexes should be in effect.
Be sure that the where clause is specified correctly so as to activate the
index.
You can use shsql -debug for more insight into how the query is being processed.
Another possibility is to set
dbmustindex in your config file
which prohibits table scans on any table for which an index exists.
Only one row returned with SELECT .. GROUP BY when many were expected.
All fields named in the GROUP BY clause must be present in the SELECT
item list.
Underscores disappearing from a field that should have them, such as an email address.
Embedded whitespace characters are represented in the data file using underscores.
Then, underscores are converted back to spaces for presentation.
One option is to have your middleware put the underscores back in to fields if spaces
aren't allowed but underscore is (such as an email address). Another option is to turn off
underscore conversion for a retrieval using the
SQLMODE
command, then turn it back on again afterwards.
Numeric comparisons such as greater than or less than not working properly.
Since shsql has no datatypes, the fact that a certain field is to be
processed using numerical comparisons/ordering must be specified explicitly.
An index on this field must be
created
using the ORDER = NUMERIC attribute.
If using
SELECT .. ORDER BY,
the NUMERIC order attribute must be specified.
Reporting Bugs
Steve Grubb
is the original author of shsql.
Bug reports may be sent to me at scg@jax.org.
If there is sufficient interest I will initiate a yahoo newsgroup for shsql.
If you're reporting a bug please indicate your shsql version number (type shsql -ver
to find out) and your OS platform.
Please just describe the problem first.
I may then request that you send me a database directory that reproduces the problem.
About the author.
|

Copyright Steve Grubb
|