moin
moin copied to clipboard
"moin item-put ... -o" not supported by sql backends
/moin/storage/stores sqla.py and sqlite.py lack __updateitem__
methods and do not support overwriting an item using item-put CLI. Attempts to do so cause tracebacks. Workaround is for editors/admins to destroy the old item before using item-put.
SQLITE
(moin-venv-python) C:\git\moin>moin item-put -m \git\aa-zip-tar\Home.meta -d \git\aa-zip-tar\Home.data -o
Traceback (most recent call last):
File "C:\GIT\moin-venv-python\Scripts\moin-script.py", line 33, in <module>
sys.exit(load_entry_point('moin', 'console_scripts', 'moin')())
File "c:\git\moin\src\moin\scripts\__init__.py", line 93, in main
return manager.run(default_command=default_command)
File "C:\GIT\moin-venv-python\lib\site-packages\flask_script\__init__.py", line 417, in run
result = self.handle(argv[0], argv[1:])
File "C:\GIT\moin-venv-python\lib\site-packages\flask_script\__init__.py", line 386, in handle
res = handle(*args, **config)
File "C:\GIT\moin-venv-python\lib\site-packages\flask_script\commands.py", line 216, in __call__
return self.run(*args, **kwargs)
File "c:\git\moin\src\moin\scripts\maint\modify_item.py", line 103, in run
item.store_revision(meta, df, overwrite=overwrite)
File "c:\git\moin\src\moin\storage\middleware\indexing.py", line 1233, in store_revision
backend_name, revid = backend.store(meta, data)
File "c:\git\moin\src\moin\storage\middleware\routing.py", line 132, in store
revid = backend.store(meta, data)
File "c:\git\moin\src\moin\storage\backends\stores.py", line 147, in store
self.data_store[dataid] = tfw
File "c:\git\moin\src\moin\storage\stores\__init__.py", line 155, in __setitem__
super(FileMutableStoreMixin, self).__setitem__(key, value)
File "c:\git\moin\src\moin\storage\stores\sqlite.py", line 120, in __setitem__
self.conn.execute('insert into {0} values (?, ?)'.format(self.table_name), (key, value))
sqlite3.IntegrityError: UNIQUE constraint failed: data.key
(moin-venv-python) C:\git\moin>
SQLALCHEMY
(moin-venv-python) C:\git\moin>moin item-put -m \git\aa-zip-tar\Home.meta -d \git\aa-zip-tar\Home.data -o
Traceback (most recent call last):
File "C:\GIT\moin-venv-python\lib\site-packages\sqlalchemy\engine\base.py", line 1819, in _execute_context
self.dialect.do_execute(
File "C:\GIT\moin-venv-python\lib\site-packages\sqlalchemy\engine\default.py", line 732, in do_execute
cursor.execute(statement, parameters)
sqlite3.IntegrityError: UNIQUE constraint failed: store.key
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\GIT\moin-venv-python\Scripts\moin-script.py", line 33, in <module>
sys.exit(load_entry_point('moin', 'console_scripts', 'moin')())
File "c:\git\moin\src\moin\scripts\__init__.py", line 93, in main
return manager.run(default_command=default_command)
File "C:\GIT\moin-venv-python\lib\site-packages\flask_script\__init__.py", line 417, in run
result = self.handle(argv[0], argv[1:])
File "C:\GIT\moin-venv-python\lib\site-packages\flask_script\__init__.py", line 386, in handle
res = handle(*args, **config)
File "C:\GIT\moin-venv-python\lib\site-packages\flask_script\commands.py", line 216, in __call__
return self.run(*args, **kwargs)
File "c:\git\moin\src\moin\scripts\maint\modify_item.py", line 103, in run
item.store_revision(meta, df, overwrite=overwrite)
File "c:\git\moin\src\moin\storage\middleware\indexing.py", line 1233, in store_revision
backend_name, revid = backend.store(meta, data)
File "c:\git\moin\src\moin\storage\middleware\routing.py", line 132, in store
revid = backend.store(meta, data)
File "c:\git\moin\src\moin\storage\backends\stores.py", line 147, in store
self.data_store[dataid] = tfw
File "c:\git\moin\src\moin\storage\stores\__init__.py", line 155, in __setitem__
super(FileMutableStoreMixin, self).__setitem__(key, value)
File "c:\git\moin\src\moin\storage\stores\sqla.py", line 105, in __setitem__
self.table.insert().execute(key=key, value=value)
File "<string>", line 2, in execute
File "C:\GIT\moin-venv-python\lib\site-packages\sqlalchemy\util\deprecations.py", line 402, in warned
return fn(*args, **kwargs)
File "C:\GIT\moin-venv-python\lib\site-packages\sqlalchemy\sql\base.py", line 965, in execute
return e._execute_clauseelement(
File "C:\GIT\moin-venv-python\lib\site-packages\sqlalchemy\engine\base.py", line 3203, in _execute_clauseelement
return connection._execute_clauseelement(
File "C:\GIT\moin-venv-python\lib\site-packages\sqlalchemy\engine\base.py", line 1498, in _execute_clauseelement
ret = self._execute_context(
File "C:\GIT\moin-venv-python\lib\site-packages\sqlalchemy\engine\base.py", line 1862, in _execute_context
self._handle_dbapi_exception(
File "C:\GIT\moin-venv-python\lib\site-packages\sqlalchemy\engine\base.py", line 2043, in _handle_dbapi_exception
util.raise_(
File "C:\GIT\moin-venv-python\lib\site-packages\sqlalchemy\util\compat.py", line 208, in raise_
raise exception
File "C:\GIT\moin-venv-python\lib\site-packages\sqlalchemy\engine\base.py", line 1819, in _execute_context
self.dialect.do_execute(
File "C:\GIT\moin-venv-python\lib\site-packages\sqlalchemy\engine\default.py", line 732, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: store.key
[SQL: INSERT INTO store ("key", value) VALUES (?, ?)]
[parameters: ('d390f23c2a9d4757a4010ed9e839281e', <memory at 0x000001BA29598040>)]
(Background on this error at: https://sqlalche.me/e/14/gkpj)