Re: sqlite error with roundup-demo

"John P. Rouillard" <[email protected]> Wed, 08 Nov 2023 21:05:28 -0500
Newsgroups gmane.comp.bug-tracking.roundup.user
Message-ID <[email protected]>
Hi Tonu:

In message
<CABDFm8hZ4n8zdc7Q+T7mr7SbjNsOOOEBP3t23HHO_ZNU=2n4fw@mail.gmail.com> ,
Tonu Mikk via Roundup-users writes:

>I am trying to install the latest Roundup issue tracker on Red Hat Linux 7.

Are you installing Roundup 2.3.0, or are you using the repository
version?

>I installed Python 3 and created a virtual environment according to this
>guide
><https://developers.redhat.com/blog/2018/08/13/install-python3-rhel#tl_dr>.

Ok. With the virtual env enabled, what does:

  % python -V

report?

What commands did you use to install Roundup?

I assume your virtual-env is at: /home/tmikk/pydev/py36-venv?

Is that a local filesystem or an NFS filesystem?

>I then ran the roundup-demo to create a demo tracker, but got an
>error with sqlite3. I tried downloading and installing the latest
>version of sqlite, but that did not work.
>
>Any suggestions?
>
>(py36-venv) [tmikk@drc-roundup-prd-web bin]$ sudo roundup-demo

You shouldn't be running roundup as root. Run it as it's own user or
run it as yourself.

What is the #! line at the top of roundup-demo?

>> Enter directory path to create demo tracker [./demo]:
>> /swadm/roundup/trackers/demo-classic

Is /swadm/roundup/trackers a local or NFS filesystem?

>> Enter tracker template to use (one of
>> (minimal,jinja2,classic,responsive,devel)) [classic]:

This looks fine.

>> Nuking directory left from the previous demo instance.

This is odd. It is supposed to nuke the previous contents *ONLY IF*
nuke is specified on the roundup-demo command line. This could be a
bug. I can reproduce it interacively:

  (roundup)$ roundup-demo
  Enter directory path to create demo tracker [./demo]: /tmp/demo-classic
  Enter tracker template to use (one of (minimal,issue,jinja2,classic,responsive,devel,classic-demo,classic-postgres)) [classic]:
  Nuking directory left from the previous demo instance.
  Trying to set up web server on port 8917 ...
  should be ok.
  [...]

Apparently the interactive path doesn't require a nuke
keyword. However I can't reproduce your crash.

>> Trying to set up web server on port 8917 ...
>> should be ok.
>> Traceback (most recent call last):
>>   File
>> "/home/tmikk/pydev/py36-venv/lib64/python3.6/site-packages/roundup/backends/back_sqlite.py",
>> line 202, in open_connection
>>     self.load_dbschema()
>>   File
>> "/home/tmikk/pydev/py36-venv/lib64/python3.6/site-packages/roundup/backends/rdbms_common.py",
>> line 305, in load_dbschema
>>     self.cursor.execute('select schema from schema')
>> sqlite3.OperationalError: no such table: schema

This looks like an init failed. Try removing the target directory
(demo-classic) entirely and rerunning roundup-demo so it doesn't try
to nuke the existing directory since there is no existing directory.

If a valid tracker directory exists (e.g. at d in my example), you
should be seeing:

  % roundup-demo d

  Demo Tracker Home: d
  Server running - connect to:

    http://localhost:8917/demo/

It should never nuke the directory unless you specify nuke. For example:

  (roundup)$ roundup-demo  /tmp/demo-classic nuke
  Enter tracker template to use (one of (minimal,issue,jinja2,classic,responsive,devel,classic-demo,classic-postgres)) [classic]:
  Nuking directory left from the previous demo instance.
  Trying to set up web server on port 8917 ...

>> During handling of the above exception, another exception occurred:
>>
>> Traceback (most recent call last):
>>   File "/home/tmikk/pydev/py36-venv/bin/roundup-demo", line 11, in <module>
>>     load_entry_point('roundup==2.3.0', 'console_scripts', 'roundup-demo')()
>>   File
>> "/home/tmikk/pydev/py36-venv/lib64/python3.6/site-packages/roundup/scripts/roundup_demo.py",
>> line 173, in run
>>     use_port=cli_args.urlport or DEFAULT_PORT)
>>   File
>> "/home/tmikk/pydev/py36-venv/lib64/python3.6/site-packages/roundup/demo.py",
>> line 120, in install_demo
>>     tracker.init(password.Password('admin', config=config))
>>   File
>> "/home/tmikk/pydev/py36-venv/lib64/python3.6/site-packages/roundup/instance.py",
>> line 209, in init
>>     db = self.open('admin')
>>   File
>> "/home/tmikk/pydev/py36-venv/lib64/python3.6/site-packages/roundup/instance.py",
>> line 115, in open
>>     'db': backend.Database(self.config, name)
>>   File
>> "/home/tmikk/pydev/py36-venv/lib64/python3.6/site-packages/roundup/backends/rdbms_common.py",
>> line 227, in __init__
>>     self.open_connection()
>>   File
>> "/home/tmikk/pydev/py36-venv/lib64/python3.6/site-packages/roundup/backends/back_sqlite.py",
>> line 211, in open_connection
>>     self._add_fts5_table()
>>   File
>> "/home/tmikk/pydev/py36-venv/lib64/python3.6/site-packages/roundup/backends/back_sqlite.py",
>> line 255, in _add_fts5_table
>>     self.sql('CREATE virtual TABLE __fts USING fts5(_class, '
>>   File
>> "/home/tmikk/pydev/py36-venv/lib64/python3.6/site-packages/roundup/backends/rdbms_common.py",
>> line 266, in sql
>>     cursor.execute(sql)
>> sqlite3.OperationalError: no such module: fts5

What version of sqlite are you using?  SQLite version 3.9.0 (released:
2015-10-14) and newer have fts5 support by default.

What does:

  % sqlite3 -version

show?

My main dev platform is debian based (ubuntu 18.04) with Python 3.6
and sqlite works fine.

What happens if you run (from within the venv):

  % roundup-demo -b sqlite -t classic /tmp/demo-classic

This is what I get:

   $ roundup-admin -V
   Roundup 2.3.0 ready for input.

(type exit to exit the admin interface)

   (roundup)$ roundup-demo -b sqlite -t classic /tmp/demo-classic
   Trying to set up web server on port 8917 ...
   should be ok.

   Demo Tracker Home: /tmp/demo-classic
   Server running - connect to:

       http://localhost:8917/demo/
   [...]

when restarting I get:

   (roundup)$ roundup-demo /tmp/demo-classic

   Demo Tracker Home: /tmp/demo-classic
   Server running - connect to:
   [...]

python version:

   (roundup)$ python -V
   Python 3.6.9

python sqlite3 version info: 

   (roundup)$ python -c 'import sqlite3; print(sqlite3.version_info, sqlite3.sqlite_version_info)'
   (2, 6, 0) (3, 22, 0)

sqlite3 cli version

   $ sqlite3 -version
   3.22.0 2018-01-22 18:45:57 0c55d[...]

Compare these to what you get.

Have a great day.
--
				-- rouilj
John Rouillard
===========================================================================
My employers don't acknowledge my existence much less my opinions.