(psycopg2.errors.StringDataRightTruncation) value too long for type character varying(40)
Self Checks
- [x] This is only for bug report, if you would like to ask a question, please head to Discussions.
- [x] I have searched for existing issues search for existing issues, including closed ones.
- [x] I confirm that I am using English to submit this report (我已阅读并同意 Language Policy).
- [x] [FOR CHINESE USERS] 请务必使用英文提交 Issue,否则会被关闭。谢谢!:)
- [x] Please do not modify this template :) and fill in all the required fields.
Dify version
v1.0.0
Cloud or Self Hosted
Self Hosted (Source)
Steps to reproduce
I've created a embeddings provider of openai_api_compatible, while creating a knowledge as below,
error occured
✔️ Expected Behavior
no error
❌ Actual Behavior
, I think maybe the provider_name (in this case: 'langgenius/openai_api_compatible/openai_api_compatible') is too long for provider_name colume on v1.0.0
[SQL: INSERT INTO dataset_collection_bindings (provider_name, model_name, type, collection_name) VALUES (%(provider_name)s, %(model_name)s, %(type)s, %(collection_name)s) RETURNING dataset_collection_bindings.id, dataset_collection_bindings.created_at]
[parameters: {'provider_name': 'langgenius/openai_api_compatible/openai_api_compatible', 'model_name': 'text-embedding-3-large', 'type': 'dataset', 'collection_name': 'Vector_index_77a15f7e_2571_4da5_8ed1_e76699895229_Node'}]
Full logs as below:
2025-03-01 04:52:36,358 INFO [_internal.py:97] 127.0.0.1 - - [01/Mar/2025 04:52:36] "OPTIONS /console/api/datasets/init HTTP/1.1" 200 -
2025-03-01 04:52:36,682 ERROR [app.py:875] ecfe8abce9 Exception on /console/api/datasets/init [POST]
Traceback (most recent call last):
File "/mnt/e/workspace/dify-oracle/api/.venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
self.dialect.do_execute(
File "/mnt/e/workspace/dify-oracle/api/.venv/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 941, in do_execute
cursor.execute(statement, parameters)
psycopg2.errors.StringDataRightTruncation: value too long for type character varying(40)
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/mnt/e/workspace/dify-oracle/api/.venv/lib/python3.12/site-packages/flask/app.py", line 917, in full_dispatch_request
rv = self.dispatch_request()
^^^^^^^^^^^^^^^^^^^^^^^
File "/mnt/e/workspace/dify-oracle/api/.venv/lib/python3.12/site-packages/flask/app.py", line 902, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/mnt/e/workspace/dify-oracle/api/.venv/lib/python3.12/site-packages/flask_restful/__init__.py", line 489, in wrapper
resp = resource(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/mnt/e/workspace/dify-oracle/api/.venv/lib/python3.12/site-packages/flask/views.py", line 110, in view
return current_app.ensure_sync(self.dispatch_request)(**kwargs) # type: ignore[no-any-return]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/mnt/e/workspace/dify-oracle/api/.venv/lib/python3.12/site-packages/flask_restful/__init__.py", line 604, in dispatch_request
resp = meth(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/mnt/e/workspace/dify-oracle/api/controllers/console/wraps.py", line 147, in decorated
return view(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/mnt/e/workspace/dify-oracle/api/libs/login.py", line 94, in decorated_view
return current_app.ensure_sync(func)(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/mnt/e/workspace/dify-oracle/api/controllers/console/wraps.py", line 27, in decorated
return view(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/mnt/e/workspace/dify-oracle/api/.venv/lib/python3.12/site-packages/flask_restful/__init__.py", line 696, in wrapper
resp = f(*args, **kwargs)
^^^^^^^^^^^^^^^^^^
File "/mnt/e/workspace/dify-oracle/api/controllers/console/wraps.py", line 86, in decorated
return view(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/mnt/e/workspace/dify-oracle/api/controllers/console/datasets/datasets_document.py", line 374, in post
dataset, documents, batch = DocumentService.save_document_without_dataset_id(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/mnt/e/workspace/dify-oracle/api/services/dataset_service.py", line 1257, in save_document_without_dataset_id
dataset_collection_binding = DatasetCollectionBindingService.get_dataset_collection_binding(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/mnt/e/workspace/dify-oracle/api/services/dataset_service.py", line 2085, in get_dataset_collection_binding
db.session.commit()
File "/mnt/e/workspace/dify-oracle/api/.venv/lib/python3.12/site-packages/sqlalchemy/orm/scoping.py", line 597, in commit
return self._proxied.commit()
^^^^^^^^^^^^^^^^^^^^^^
File "/mnt/e/workspace/dify-oracle/api/.venv/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2028, in commit
trans.commit(_to_root=True)
File "<string>", line 2, in commit
File "/mnt/e/workspace/dify-oracle/api/.venv/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
ret_value = fn(self, *arg, **kw)
^^^^^^^^^^^^^^^^^^^^
File "/mnt/e/workspace/dify-oracle/api/.venv/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1313, in commit
self._prepare_impl()
File "<string>", line 2, in _prepare_impl
File "/mnt/e/workspace/dify-oracle/api/.venv/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
ret_value = fn(self, *arg, **kw)
^^^^^^^^^^^^^^^^^^^^
File "/mnt/e/workspace/dify-oracle/api/.venv/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1288, in _prepare_impl
self.session.flush()
File "/mnt/e/workspace/dify-oracle/api/.venv/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 4352, in flush
self._flush(objects)
File "/mnt/e/workspace/dify-oracle/api/.venv/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 4487, in _flush
with util.safe_reraise():
File "/mnt/e/workspace/dify-oracle/api/.venv/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
raise exc_value.with_traceback(exc_tb)
File "/mnt/e/workspace/dify-oracle/api/.venv/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 4448, in _flush
flush_context.execute()
File "/mnt/e/workspace/dify-oracle/api/.venv/lib/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
rec.execute(self)
File "/mnt/e/workspace/dify-oracle/api/.venv/lib/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
util.preloaded.orm_persistence.save_obj(
File "/mnt/e/workspace/dify-oracle/api/.venv/lib/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
_emit_insert_statements(
File "/mnt/e/workspace/dify-oracle/api/.venv/lib/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
result = connection.execute(
^^^^^^^^^^^^^^^^^^^
File "/mnt/e/workspace/dify-oracle/api/.venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1418, in execute
return meth(
^^^^^
File "/mnt/e/workspace/dify-oracle/api/.venv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py", line 515, in _execute_on_connection
return connection._execute_clauseelement(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/mnt/e/workspace/dify-oracle/api/.venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1640, in _execute_clauseelement
ret = self._execute_context(
^^^^^^^^^^^^^^^^^^^^^^
File "/mnt/e/workspace/dify-oracle/api/.venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
return self._exec_single_context(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/mnt/e/workspace/dify-oracle/api/.venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
self._handle_dbapi_exception(
File "/mnt/e/workspace/dify-oracle/api/.venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
File "/mnt/e/workspace/dify-oracle/api/.venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
self.dialect.do_execute(
File "/mnt/e/workspace/dify-oracle/api/.venv/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 941, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.DataError: (psycopg2.errors.StringDataRightTruncation) value too long for type character varying(40)
To resolve the "psycopg2.errors.StringDataRightTruncation: value too long for type character varying(40)" error, you need to increase the length of the provider_name column in the dataset_collection_bindings table. Here are the steps to do this:
-
Connect to the Docker database container:
docker exec -it docker-db-1 bash -
Connect to the Dify database:
psql -d dify -
Alter the
provider_namecolumn length:ALTER TABLE dataset_collection_bindings ALTER COLUMN provider_name TYPE VARCHAR(255); -
Verify the change:
\d dataset_collection_bindings;
This will allow longer values for the provider_name column, resolving the error you're encountering [1].
To continue talking to Dosu, mention @dosu.
Help Dosu learn! Give it feedback: Great Response | Irrelevant Answer | Incorrect Sources | Too Verbose | Hallucination | Bug Report | Other
hi,this is fixed on my side. but if i restart docker,the DB will cancel the change? when we just install and not need to change DB table manually?
docker exec -it docker-db-1 bash c76893cff4d1:/# psql -d dify psql (15.12) Type "help" for help.
dify=# ALTER TABLE dataset_collection_bindings ALTER COLUMN provider_name TYPE VARCHAR(255); ALTER TABLE dify=# \d dataset_collection_bindings; Table "public.dataset_collection_bindings" Column | Type | Collation | Nullable | Default -----------------+-----------------------------+-----------+----------+------------------------------ id | uuid | | not null | uuid_generate_v4() provider_name | character varying(255) | | not null | model_name | character varying(255) | | not null | collection_name | character varying(64) | | not null | created_at | timestamp without time zone | | not null | CURRENT_TIMESTAMP(0) type | character varying(40) | | not null | 'dataset'::character varying Indexes: "dataset_collection_bindings_pkey" PRIMARY KEY, btree (id) "provider_model_name_idx" btree (provider_name, model_name)