google / google/python-spanner-orm

[BUG] Tables with string columns defined manually not using `STRING(MAX)`, ie `STRING(1024)` will fail

Open
#165 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
41
Forks
17
PR merge metrics
No merged PRs in 30d

Description

If you create a table directly via sql command and then try to interact with that same db with spanner_orm then it will fail.

```
CREATE TABLE manuallyCreatedTable(
id INT64 NOT NULL,
ProblematicColumn STRING(1024),
) PRIMARY KEY(id);
```

And you create any table. You will get an error like:

```
/usr/local/bin/spanner-orm(8)()
-> sys.exit(main())
/usr/local/lib/python3.9/site-packages/spanner_orm/admin/scripts.py(78)main()
-> args.execute(args)
/usr/local/lib/python3.9/site-packages/spanner_orm/admin/scripts.py(33)migrate()
-> executor.migrate(args.name)
/usr/local/lib/python3.9/site-packages/spanner_orm/admin/migration_executor.py(63)migrate()
-> self._validate_migrations()
/usr/local/lib/python3.9/site-packages/spanner_orm/admin/migration_executor.py(184)_validate_migrations()
-> if (self.migrated(migration_.migration_id) and
/usr/local/lib/python3.9/site-packages/spanner_orm/admin/migration_executor.py(46)migrated()
-> return self._migration_status().get(migration_id, False)
/usr/local/lib/python3.9/site-packages/spanner_orm/admin/migration_executor.py(150)_migration_status()
-> model_from_db = metadata.SpannerMetadata.model(
/usr/local/lib/python3.9/site-packages/spanner_orm/admin/metadata.py(68)model()
-> return cls.models().get(table_name)
/usr/local/lib/python3.9/site-packages/spanner_orm/admin/metadata.py(43)models()
-> tables = cls.tables()
/usr/local/lib/python3.9/site-packages/spanner_orm/admin/metadata.py(80)tables()
-> column_row.field_type(), nullable=column_row.nullable())
> /usr/local/lib/python3.9/site-packages/spanner_orm/admin/column.py(45)field_type()
-> raise error.SpannerError('No corresponding Type for {}'.format(
(Pdb) up
> /usr/local/lib/python3.9/site-packages/spanner_orm/admin/metadata.py(80)tables()
-> column_row.field_type(), nullable=column_row.nullable())
(Pdb) column_row.field_type()
*** spanner_orm.error.SpannerError: No corresponding Type for STRING(1024)`
```

WORKAROUND: You will need to either set `ProblematicColumn ` to `STRING(MAX)` or delete that table.

Leaving this here for future intrepid souls.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.