Building sqlite under windows with soundex function - windows

I am trying to build sqlite under windows with soundex funtion, while build succeeds, i still don't get soundex functionality. i couldn't figure out where is the error.
cl -DSQLITE_THREADSAFE=0 -DSQLITE_SOUNDEX sqlite3.c -link -dll -out:sqlite3.dll
outputs:
/out:sqlite3.exe
-dll
-out:sqlite3.dll
sqlite3.obj
When i try newly build dll
C:\sqlite\sqlite-amalgamation-3250200>sqlite3.exe
SQLite version 3.25.2 2018-09-25 19:08:10
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> SELECT SOUNDEX("John"), SOUNDEX("Joahn");
Error: no such function: SOUNDEX
sqlite>
For ubuntu its very clear how to compile with parameters but for windows i couldn't find what is the way to pass DSQLITE_SOUNDEX correctly.
Thanks a lot.

Related

Python cx_Oracle error "DPI-1047: Cannot locate a 32-bit Oracle Client"

How fix this error, I use python3.6 and I use Oracle database 11g, I want to connect my python to oracle database, but shows error, how can I fix it?
This is my code:
#importing module
import cx_Oracle
#create a table in oracle database
try:
con = cx_Oracle.connect('db_employees/root#localhost')
#Now execute the sqlquery
cursor = con.cursor()
cursor.execute("insert into employees values(2171114103970002, raden, ceo, 01031997, batam, 001)")
#commit that insert the provided database
con.commit()
except cx_Oracle.DatabaseError as e:
print("There is a problem with Oracle", e)
#by writing finally if any error occurs
#then also we can close the all database operation
finally:
if cursor:
cursor.close()
if con:
con.close()
This is messages error:
C:\Python36>python "D:\testing.py"
There is a problem with Oracle DPI-1047: Cannot locate a 32-bit Oracle Client library: "The specified module could not be found". See https://oracle.github.io/odpi/doc/installation.html#windows for help
Traceback (most recent call last):
File "D:\testing.py", line 20, in <module>
if cursor:
NameError: name 'cursor' is not defined
Here are the installation instructions: Installing cx_Oracle on Windows.
The error is saying you need a 32-bit Oracle client library. You can get one from 32-bit Windows Instant Client (The 64-bit libraries are here if anyone needs them) Any version up to 19c will connect to Oracle DB 11.2. Instructions are at the foot of the page. Make sure you have the correct VS redistributable installed.
Check your path to see if the client is on it, in some cases the path is not set to point the client or contain invalid characters on it and the python library can't access to it.
You can check here a similar issue https://github.com/oracle/python-cx_Oracle/issues/55
I was facing the same issue and here are the steps how I fixed this -
Download latest 64-bit version of oracle basic instantClient from:
https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html
In my case I have downloaded - windows.x64-19.10.0.0.0dbru.zip
Unzip the Oracle instantClient and copy all .dll files
Copy these .dll files from Oracle instantclient directory to the python directory

GnuCOBOL entry point not found

I've installed GnuCOBOL 2.2 on my Ubuntu 17.04 system. I've written a basic hello world program to test the compiler.
1 IDENTIFICATION DIVISION.
2 PROGRAM-ID. HELLO-WORLD.
3 *---------------------------
4 DATA DIVISION.
5 *---------------------------
6 PROCEDURE DIVISION.
7 DISPLAY 'Hello, world!'.
8 STOP RUN.
This program is entitled HelloWorld.cbl. When I compile the program with the command
cobc HelloWorld.cbl
HelloWorld.so is produced. When I attempt to run the compiled program using
cobcrun HelloWorld
I receive the following error:
libcob: entry point 'HelloWorld' not found
Can anyone explain to me what an entry point is in GnuCOBOL, and perhaps suggest a way to fix the problem and successfully execute this COBOL program?
According to the official manual of GNUCOBOL, you should compile your code with:
cobc -x HelloWorld.cbl
then run it with
./HelloWorld
You can also read GNUCOBOL wiki page which contains some exmaples for further information.
P.S. As Simon Sobisch said, If you change your file name to HELLO-WORLD.cbl to match the program ID, the same commands that you have used will be ok:
cobc HELLO-WORLD.cbl
cobcrun HELLO-WORLD
Can anyone explain to me what an entry point is in GnuCOBOL, and perhaps suggest a way to fix the problem and successfully execute this COBOL program?
An entry point is a point where you may enter a shared object (this is actually more C then COBOL).
GnuCOBOL generates entry points for each PROGRAM-ID, FUNCTION-ID and ENTRY. Therefore your entry point is HELLO-WORLD (which likely gets a conversion as - is no valid identifier in ANSI C - you won't have to think about this when CALLing a program as the conversion will be done internal).
Using cobcrun internally does:
search for a shared object (in your case HelloWord), as this is found (because you've generated it) it will be loaded
search for an entry point in all loaded modules - which isn't found
There are three possible options to get this working:
As mentioned in Ho1's answer: use cobc -x, the reason that this works is because you don't generate a shared object at all but a C main which is called directly (= the entry point doesn't apply at all)
preload the shared object and calling the program by its PROGRAM-ID (entry point), either manually with COB_PRE_LOAD=HelloWorld cobcrun HELLO-WORLD or through cobcrun (option available since GnuCOBOL 2.x) cobcrun -M HelloWorld HELLO-WORLD
change the PROGRAM-ID to match the source name (either rename or change the source, I'd do the second: PROGRAM-ID. HelloWorld.)

Trying to connect to sqlite db using schemacrawler using OSX - why is it asking for a user?

See bottom for conclusion:
I'm trying to use schemacrawler to diagram a sqlite database. My setup:
OSX 10.8
SchemaCrawler 10.5 downloaded from Here
Java version 1.7.0_45 downloaded from Oracle
sqlite version: 3.7.12 2012-04-03 19:43:07 86b8481be7e76cccc92d14ce762d21bfb69504af
I'm in the directory where I installed schemacrawler, and using this command line:
stebro$ java -classpath lib/*:. schemacrawler.tools.sqlite.Main /Library/Application\ Support/MyApp/Data/MyApp.db -command="select count(*) from myTable" -infolevel=maximum
SchemaCrawler 10.5
Copyright (c) 2000-2013, Sualeh Fatehi.
SchemaCrawler is a database schema discovery and comprehension tool.
You can search for database schema objects using regular expressions,
and output the schema and data in a readable text format. You can find
potential schema design issues with lint. The output serves for
database documentation is designed to be diff-ed against other database
schemas. SchemaCrawler also generates schema diagrams.
password:
java.sql.SQLException: Could not connect to database, for user null
at schemacrawler.schemacrawler.BaseDatabaseConnectionOptions.getConnection(BaseDatabaseConnectionOptions.java:93)
at schemacrawler.schemacrawler.BaseDatabaseConnectionOptions.getConnection(BaseDatabaseConnectionOptions.java:70)
at schemacrawler.tools.commandline.SchemaCrawlerCommandLine.execute(SchemaCrawlerCommandLine.java:173)
at schemacrawler.tools.commandline.SchemaCrawlerMain.main(SchemaCrawlerMain.java:93)
at schemacrawler.tools.commandline.SchemaCrawlerMain.main(SchemaCrawlerMain.java:52)
at schemacrawler.tools.sqlite.Main.main(Main.java:43)
Caused by: java.lang.IllegalArgumentException: Insufficient parameters for database connection URL: missing [database]
at schemacrawler.schemacrawler.DatabaseConfigConnectionOptions.getConnectionUrl(DatabaseConfigConnectionOptions.java:73)
at schemacrawler.schemacrawler.BaseDatabaseConnectionOptions.getConnection(BaseDatabaseConnectionOptions.java:89)
... 5 more
If I specify -password, I get the same error, and specifying various values for -user does the same. Sqlite requires no user/password - why is the jdbc or schemacrawler asking me for one?
Addendum:
Here is a specific series of commands that creates a simple database then attempts to diagram it with schemacrawler:
bash-3.2$ sqlite3 MyApp.db
sqlite3 MyApp.db
SQLite version 3.7.12 2012-04-03 19:43:07
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> create table smbtest(col1 integer, col2 integer);
create table smbtest(col1 integer, col2 integer);
sqlite> ^D
bash-3.2$ ~/bin/sunjava -classpath lib/*:. schemacrawler.tools.sqlite.Main -database=MyApp.db -infolevel=maximum -command=graph -outputformat=pdf -outputfile=myapp.pdf
SchemaCrawler 10.5
Copyright (c) 2000-2013, Sualeh Fatehi.
SchemaCrawler is a database schema discovery and comprehension tool.
You can search for database schema objects using regular expressions,
and output the schema and data in a readable text format. You can find
potential schema design issues with lint. The output serves for
database documentation is designed to be diff-ed against other database
schemas. SchemaCrawler also generates schema diagrams.
password:
Graphviz was not available to create the requested graph. Please reinstall
Graphviz, and make it available on the system PATH. Meanwhile, a .dot text file
has been created instead. This .dot file can be opened in any Graphviz file
viewer.
java.io.IOException: Cannot run program "dot": error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1041)
at schemacrawler.tools.integration.graph.ProcessExecutor.execute(ProcessExecutor.java:124)
at schemacrawler.tools.integration.graph.GraphGenerator.generateDiagram(GraphGenerator.java:87)
at schemacrawler.tools.integration.graph.GraphExecutable.executeOn(GraphExecutable.java:123)
at schemacrawler.tools.executable.SchemaCrawlerExecutable.executeOn(SchemaCrawlerExecutable.java:87)
at schemacrawler.tools.executable.BaseExecutable.execute(BaseExecutable.java:77)
at schemacrawler.tools.commandline.SchemaCrawlerCommandLine.execute(SchemaCrawlerCommandLine.java:176)
at schemacrawler.tools.commandline.SchemaCrawlerMain.main(SchemaCrawlerMain.java:93)
at schemacrawler.tools.commandline.SchemaCrawlerMain.main(SchemaCrawlerMain.java:52)
at schemacrawler.tools.sqlite.Main.main(Main.java:43)
Caused by: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.<init>(UNIXProcess.java:135)
at java.lang.ProcessImpl.start(ProcessImpl.java:130)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1022)
... 9 more
Final conclusion:
The problem lay in the fact that the path to my db had a space in it; no combination of backslashing, double or single quotes, or both resolved the issue. Running the command from the same directory as my db file did the trick. The space issue may be due to my not understanding the right escape sequences to use in bash - I may have to double-escape the spaces if schemacrawler is spawning other processes using my name as part of the command line.
However, the app did continue to ask for my password, but just pressing enter allowed it to continue successfully.
Steve,
You need to specify the database like this:
"-database=/Library/Application Support/MyApp/Data/MyApp.db"
Notice the double-quotes to allow for the space in the path to the database file, and the -database command-line switch. I also removed the back-slash, since the whole switch in enclosed in double-quotes.
For help on the command-line, simply run:
java -classpath lib/*:. schemacrawler.tools.sqlite.Main
Sualeh Fatehi, SchemaCrawler
Generating DB Schema ER Diagram using SchemaCrawler We can visualize our DB schema using SchemaCrawler Download the latest package from here:
https://github.com/sualeh/SchemaCrawler/releases/
Copy _schemacrawler folder and rename it to schemacrawler to another location and add the directory path of the same to PATH Use GraphViz to create schema diagram http://sualeh.github.io/SchemaCrawler/diagramming.html
Cd into schemacrawler directory and run ./schemacrawler.sh(on mac and ubuntu env) with option as mentioned below.
You can run sample command to get the schema diagram in the form of png image for postgre db:
./schemacrawler.sh -command graph -outputformat png -outputfile=dh_er.png -loglevel=CONFIG -server=postgresql -host=localhost -port=5432 -database=testdb -user=testuser -password=testpass -infolevel=standard
To include/exclude some tables you need to define configuration
in schemacrawler.config.properties as example:
schemacrawler.table.pattern.include=.*askbot_activityauditstatus |.*askbot_anonymousanswer|.*askbot_anonymousquestion |.*askbot_askwidget|.*askbot_badgedata|.*askbot_bulktagsubscription |.*askbot_bulktagsubscription_groups|.*askbot_bulktagsubscription_tags
schemacrawler.table.pattern.exclude is the key. value of the same is the JAVA regex pattern
Note: If you are facing "SERVICE: Cannot run program "dot": error=2, No such file or directory" issue...
Please install below(for mac only):
Install the app : brew install graphviz
I don't think you are specifying -classpath correctly. I think you need a wrapper shell script around that command to expand each .jar in lib so that it's separated with : characters:
#!/bin/sh
classpath="."
for j in lib/*.jar
do
classpath=$classpath:$j
done
java -classpath $classpath schemacrawler.tools.sqlite.Main /Library/Application\ Support/MyApp/Data/MyApp.db -command="select count(*) from myTable" -infolevel=maximum
Just a stab-in-the-dark but that's the way I've always done it. Obviously this is more complicated if non-jar classpaths have to be included as well...

SQR 5543 error. Report arguments in sqrw

I am trying to run SQRW and it asks for report arguments.
I entered -ZIF"path to my pssqr.ini" (without the quotes)
once I hit OK I get the error (SQR 5543) Specify the Oracle DLL name in the SQR.INI file in [Environment:Oracle] section for ORACE_DLL entry, such as
ORACLE_DLL=orant71.dll
I tried to add the oracle dll bin path to my search path and I also tried added that ORACLE_DLL= to the pssqr.ini file. Neither worked but i'm not even sure which dll file I should get. There is nothing like orant71.dll in my oracle bin directory.
Which dll file do I use if i have oracle 11?
Are there any other suggestion of what I can do or what is wrong?
In case anyone else runs into this problem, I fixed it by installing Oracle 10g rather than 11g. This fixed it, I don't know why though.

clsql connect oracle database

I am doing some practice with clsql. I want to connect my oracle server hence my connection function is;
(connect '("192.168.2.3" "xe" "username" "password") :database-type :oracle)
when i hit the return, the following error message shows up.
Couldn't load foreign libraries "libclntsh", "oci". (searched *FOREIGN-LIBRARY-SEARCH-PATHS*)
[Condition of type SIMPLE-ERROR]
I have already installed oracle-instantclient11.2-basic-11.2.0.1.0-1.i386.rpm
and define export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client/lib
So, what else should I do to connect the server?
I was playing with oracle lately and found out that all you need is to put path to libclntsh into /etc/ld.conf.d/oracle.conf
My setup was following( redhat,centos - as root): downloaded from oracle
oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm
install via rpm -ivh oracle*.rpm
Create file /etc/ld.so.conf.d/oracle.conf:
/usr/lib/oracle/12.1/client64/lib
then execute ldconfig
Now as clsql-oracle is not in quicklisp, I downloaded and extracted clsql-6.6.2, then
(require "asdf")
(push #P"/opt/jeff/clsql-6.6.2/" asdf:*central-registry*)
(asdf:load-system :clsql-oracle)
(defparameter *some-db* (connect '("127.0.0.1:1521/db1" "SOME_USER_RO" "*******") :database-type :oracle))
and voila, it works
One thing that trips me up with dynamic linking to the Oracle libs (in C/C++ that is), is the fact that the libclntsh.so shared object comes with the version after the so name. So you may need to create a soft link in the same directory, ensuring that the soft link name is just libclntsh.so

Resources