v1a0 / sqllex

The most pythonic ORM (for SQLite and PostgreSQL). Seriously, try it out!
https://v1a0.github.io/sqllex
GNU General Public License v3.0
91 stars 8 forks source link

BUG | Workflow "OperationalError: near "DROP": syntax error" #35

Open v1a0 opened 3 years ago

v1a0 commented 3 years ago

Workflow "Test Sqlite3x"

YML: .github/workflows/test_sqlite3x.yml

Running tests/new_test_all.py and falling with sqlite3.OperationalError: near "DROP": syntax error.

Falling function has_add_remove_column_test(), temporary #commented

Here is the log:

2021-06-19 04:00:01.512 | DEBUG    | sqllex.core.entities.sqlite3x.midleware:execute_wrapper:53 - 
CREATE  TABLE  't8'  (
id INTEGER ,
test TEXT 
) ;

2021-06-19 04:00:01.513 | DEBUG    | sqllex.core.entities.sqlite3x.midleware:execute_wrapper:53 - 
SELECT name FROM sqlite_master WHERE type='table'

2021-06-19 04:00:01.513 | DEBUG    | sqllex.core.entities.sqlite3x.midleware:execute_wrapper:53 - 
ALTER TABLE 't8' ADD 'col1' TEXT DEFAULT 123

2021-06-19 04:00:01.513 | DEBUG    | sqllex.core.entities.sqlite3x.midleware:execute_wrapper:53 - 
ALTER TABLE 't8' ADD 'col2' TEXT

2021-06-19 04:00:01.514 | DEBUG    | sqllex.core.entities.sqlite3x.midleware:execute_wrapper:53 - 
SELECT name FROM PRAGMA_TABLE_INFO('t8')

2021-06-19 04:00:01.514 | DEBUG    | sqllex.core.entities.sqlite3x.midleware:execute_wrapper:53 - 
SELECT name FROM PRAGMA_TABLE_INFO('t8')

2021-06-19 04:00:01.514 | DEBUG    | sqllex.core.entities.sqlite3x.midleware:execute_wrapper:53 - 
ALTER TABLE 't8' DROP COLUMN 'col2'

Traceback (most recent call last):
  File "/home/runner/work/sqllex/sqllex/new_test_all.py", line 423, in <module>
    has_add_remove_column_test()
  File "/home/runner/work/sqllex/sqllex/new_test_all.py", line 395, in has_add_remove_column_test
    t8.remove_column('col2')
  File "/home/runner/work/sqllex/sqllex/sqllex/core/entities/sqlite3x/sqlite3x.py", line 215, in remove_column
    self.db.remove_column(self.name, column)
  File "/home/runner/work/sqllex/sqllex/sqllex/core/entities/sqlite3x/sqlite3x.py", line 1417, in remove_column
    self.execute(
  File "/home/runner/work/sqllex/sqllex/sqllex/core/entities/sqlite3x/sqlite3x.py", line 1128, in execute
    return self._execute_stmt(script=script, values=values, request=request)
  File "/home/runner/work/sqllex/sqllex/sqllex/core/tools/convertors/listers.py", line 61, in t2l_wrapper
    ret = func(*args, **kwargs)
  File "/home/runner/work/sqllex/sqllex/sqllex/core/entities/sqlite3x/midleware.py", line 67, in execute_wrapper
    return executor(stmt.connection, stmt)
  File "/home/runner/work/sqllex/sqllex/sqllex/core/entities/sqlite3x/midleware.py", line 38, in executor
    raise error
  File "/home/runner/work/sqllex/sqllex/sqllex/core/entities/sqlite3x/midleware.py", line 33, in executor
    cur.execute(stmt.request.script)
sqlite3.OperationalError: near "DROP": syntax error
Error: Process completed with exit code 1.
kingabzpro commented 3 years ago

I have same error image

v1a0 commented 3 years ago

SQLite supports a limited subset of ALTER TABLE. The ALTER TABLE command in SQLite allows the user to rename a table or to add a new column to an existing table. It is not possible to rename a column, remove a column, or add or remove constraints from a table.

https://stackoverflow.com/questions/8442147/how-to-delete-or-add-column-in-sqlite

https://www.sqlite.org/faq.html#q11

https://www.sqlite.org/lang_altertable.html