openlp-core team mailing list archive
-
openlp-core team
-
Mailing list archive
-
Message #29834
[Bug 1588811] Re: First-run crash, Ubuntu 16.04
Cannot reproduce probably because your default database type isn't
MySQL? I didn't disable mysql because I still want to use it.
I have the following in my config file:
[songs]
...
db%20type=mysql
...
My point is that MySQL is still a usable option, not deprecated (and I
hope never deprecated as it's so useful), but the packaging is such that
it causes these 1st-run fails for the unwary or unsuspecting. I'm pretty
sure that pre 2.4 it was ok - actually, probably pre python3.
Even though I hand installed python3-pymysql, and the run error is no
more, I'm now faced with a different fault dialog on start:
OpenLP cannot load your database.
Database:
sqlite:////home/bevand10/.local/share/openlp/songs/songs.sqlite
I can hit 'ok' and the interface does load but with no songs widget.
On your last note, you suggest python3-mysql.connector. I purged pymysql
and instead installed your dependency.
Doing that broke OpenLP completely - same error as before (the last line
being the tell-tail)...
Traceback (most recent call last):
File "/usr/bin/openlp", line 44, in <module>
main()
File "/usr/share/openlp/openlp/core/__init__.py", line 391, in main
sys.exit(application.run(qt_args))
File "/usr/share/openlp/openlp/core/__init__.py", line 142, in run
Registry().execute('bootstrap_initialise')
File "/usr/share/openlp/openlp/core/common/registry.py", line 137, in execute
result = function(*args, **kwargs)
File "/usr/share/openlp/openlp/core/lib/pluginmanager.py", line 54, in bootstrap_initialise
self.find_plugins()
File "/usr/share/openlp/openlp/core/lib/pluginmanager.py", line 102, in find_plugins
plugin = p()
File "/usr/share/openlp/openlp/plugins/songs/songsplugin.py", line 84, in __init__
self.manager = Manager('songs', init_schema, upgrade_mod=upgrade)
File "/usr/share/openlp/openlp/core/lib/db.py", line 238, in __init__
db_ver, up_ver = upgrade_db(self.db_url, upgrade_mod)
File "/usr/share/openlp/openlp/core/lib/db.py", line 130, in upgrade_db
session, metadata = init_db(url)
File "/usr/share/openlp/openlp/core/lib/db.py", line 53, in init_db
engine = create_engine(url, poolclass=NullPool)
File "/usr/lib/python3/dist-packages/sqlalchemy/engine/__init__.py", line 386, in create_engine
return strategy.create(*args, **kwargs)
File "/usr/lib/python3/dist-packages/sqlalchemy/engine/strategies.py", line 75, in create
dbapi = dialect_cls.dbapi(**dbapi_args)
File "/usr/lib/python3/dist-packages/sqlalchemy/dialects/mysql/pymysql.py", line 49, in dbapi
return __import__('pymysql')
File "/usr/lib/python3/dist-packages/uno.py", line 268, in _uno_import
return _g_delegatee( name, *optargs, **kwargs )
ImportError: No module named 'pymysql'
So after the crash, a purge of the mysql.connector deb and re-instate of the pymysql, and starting openlp, it no longer crashes and burns as above. I face an Error pop-up "OpenLP is already running. Do you wish to continue?". I hit no.
On checking I don't find an existing process:
$ ps aux|egrep "op|py"
message+ 695 0.0 0.0 84804 4860 ? Ss May18 16:35 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
whoopsie 761 0.0 0.0 523012 4500 ? Ssl May18 0:03 /usr/bin/whoopsie -f
bevand10 3393 0.0 0.2 690548 17184 ? Sl May18 1:01 /usr/bin/python3 /usr/bin/blueman-applet
bevand10 3396 0.0 0.0 850232 7624 ? Ssl May18 1:01 /usr/bin/python3 /usr/bin/hp-systray -x
bevand10 3514 0.0 0.5 2953468 45556 ? Ssl May18 12:37 /home/bevand10/.dropbox-dist/dropbox-lnx.x86_64-3.20.1/dropbox
bevand10 3657 0.0 0.0 244116 3876 ? Sl May18 10:17 /usr/bin/python3 /usr/bin/hp-systray -x
bevand10 3660 0.0 0.0 145904 152 ? S May18 1:01 /usr/bin/python3 /usr/bin/hp-systray -x
bevand10 27701 2.6 0.6 366088 54628 ? Sl 16:26 0:05 /usr/bin/python3 /usr/share/oneconf/oneconf-service
bevand10 28008 0.0 0.0 14232 944 pts/3 S+ 16:29 0:00 grep -E --color=auto op|py
So next time I run up openlp I answer Yes to the continue? prompt. I see the warning about no .sqlite song database, and after acknowledging, the interface loads, but, understandably given the error message, without a songs widget.
The last hour or so has been the following fun, fun, fun:
1) Purge the from-repo openlp (2.4.1), and instead, download and install
(dpkg -i) the 13 May deb from https://launchpad.net/~openlp-
core/+archive/ubuntu/release/+packages
2) Purge python3-pymysql and install the package-suggested
python3-mysql.connector.
3) Keep db%20type=mysql in config.
4) Start openlp. Instant crash (module pymysql not found).
5) Purge python3.mysql-connector. Install python3-pymsyql.
6) Start openlp. No instant crash. Now have "no song sqlite database
found".
7) Verify MySQL connectivity (mysql -uopenlp -popenlp -h127.0.0.1
openlp) - is fine.
8) Update config, db%20type=sqlite.
9) Start openlp. Is successful.
10) Stop openlp and switch db%20type=mysql.
11) Load mysql and drop all existing tables (from a 2014 install, not
sure exactly which version).
12) Start openlp. This time, faced with an empty database, openlp starts
successfully.
13) Load mysql. See that a new set of tables has been created.
13) apt-get purge python3-pymysql && apt-get install
python3-mysql.connector
13) Start openlp. Broken - import pymysql fails.
14) apt-get purge python3-mysql.connector && apt-get install
python3-pymysql
14) Start openlp. Success.
My conclusions today:
1) In 2.4.1 series (debian release, not tested elsewhere), mysql-mode-
from-a-previous-release support/upgrade is broken. Maybe it's never
supposed to work. The "sqlite song database not found" message is
misleading, and doesn't lead the user to understand the real problem.
2) In the 2.4.1 series debian control file, the suggested
python3-mysql.connector will not work, at all. One /has/ to install
python3.pymsql to avoid a fatal error.
--d.
--
You received this bug notification because you are a member of OpenLP
Core, which is subscribed to OpenLP.
https://bugs.launchpad.net/bugs/1588811
Title:
First-run crash, Ubuntu 16.04
Status in OpenLP:
New
Bug description:
Can't commit - no permission. So...
------------------------------------------------------------
revno: 75
committer: <hidden>
branch nick: debian-package
timestamp: Fri 2016-06-03 13:33:52 +0100
message:
Installation/runtime bug found on Ubuntu 16.04. While openlp depends on python3-sqlalchemy, python3-sqlalchemy only /suggests/ python3-pymysql.
Since you expressly require MySQL support (I had a first-run crash -
see below), my fix below expressly adds the pymysql package as a
depends in openlp rather than accepting the sqlalchemy, more relaxed,
suggests.
I was able to debug as I'm an experience linux dev and packager.
It's my expectation that many less experienced (perhaps not
professional Linux) users wouldn't have a clue.
===============================================
**OpenLP Bug Report**
Version: {'build': None, 'version': '2.4', 'full': '2.4'}
--- Details of the Exception. ---
First-run crash. I now know that prior MySQL use was not the factor in
this crash - it was the missing python3-pymysql dependency.
<PleaseIgnore>
Initial start of OpenLP 2.4-1 on a system that had a previous install.
The previous install was configured to use MySQL as it's backing database (we have a network MySQL server install at our church which has a separate web front-end that all
ows worship planners to search the OpenLP song database for content).
</PleaseIgnore>
--- Exception Traceback ---
Traceback (most recent call last):
File "/usr/bin/openlp", line 44, in <module>
main()
File "/usr/share/openlp/openlp/core/__init__.py", line 391, in main
sys.exit(application.run(qt_args))
File "/usr/share/openlp/openlp/core/__init__.py", line 142, in run
Registry().execute('bootstrap_initialise')
File "/usr/share/openlp/openlp/core/common/registry.py", line 137, in execute
result = function(*args, **kwargs)
File "/usr/share/openlp/openlp/core/lib/pluginmanager.py", line 54, in bootstrap_initialise
self.find_plugins()
File "/usr/share/openlp/openlp/core/lib/pluginmanager.py", line 102, in find_plugins
plugin = p()
File "/usr/share/openlp/openlp/plugins/songs/songsplugin.py", line 84, in __init__
self.manager = Manager('songs', init_schema, upgrade_mod=upgrade)
File "/usr/share/openlp/openlp/core/lib/db.py", line 238, in __init__
db_ver, up_ver = upgrade_db(self.db_url, upgrade_mod)
File "/usr/share/openlp/openlp/core/lib/db.py", line 130, in upgrade_db
session, metadata = init_db(url)
File "/usr/share/openlp/openlp/core/lib/db.py", line 53, in init_db
engine = create_engine(url, poolclass=NullPool)
File "/usr/lib/python3/dist-packages/sqlalchemy/engine/__init__.py", line 386, in create_engine
return strategy.create(*args, **kwargs)
File "/usr/lib/python3/dist-packages/sqlalchemy/engine/strategies.py", line 75, in create
dbapi = dialect_cls.dbapi(**dbapi_args)
File "/usr/lib/python3/dist-packages/sqlalchemy/dialects/mysql/pymysql.py", line 49, in dbapi
return __import__('pymysql')
File "/usr/lib/python3/dist-packages/uno.py", line 268, in _uno_import
return _g_delegatee( name, *optargs, **kwargs )
ImportError: No module named 'pymysql'
--- System information ---
Platform: Linux-4.4.0-22-generic-x86_64-with-Ubuntu-16.04-xenial
Desktop: GNOME
--- Library Versions ---
Python: 3.5.1+
Qt5: 5.5.1
PyQt5: 5.5.1
QtWebkit: 538.1
SQLAlchemy: 1.0.11
SQLAlchemy Migrate: -
BeautifulSoup: 4.4.1
lxml: 3.5.0
Chardet: 2.3.0
PyEnchant: 1.6.6
Mako: 1.0.3
pyICU: -
pyUNO bridge: 5.1
VLC: -
------------------------------------------------------------
To manage notifications about this bug go to:
https://bugs.launchpad.net/openlp/+bug/1588811/+subscriptions
References