Hi,
I am deploying a Rag app on streamlit that uses chroma db. The app works just fine on local yet when I try to deploy it I get the error: DatabaseError: file is not a database.
Current deployment link: https://gift-recommendation-chatbot.streamlit.app/
I have checked that the local version and the one I’m trying to deploy have the same requirements and versions. Both are running on python 3.11
Here is the full Traceback
────────────────────── Traceback (most recent call last) ───────────────────────
/home/adminuser/venv/lib/python3.11/site-packages/streamlit/runtime/scriptru
nner/exec_code.py:88 in exec_func_with_error_handling
/home/adminuser/venv/lib/python3.11/site-packages/streamlit/runtime/scriptru
nner/script_runner.py:579 in code_to_exec
/mount/src/gift-recommendation-chatbot/src/Gift_Recommendation_Bot.py:117 in
<module>
114 │ │ model=EMBEDDINGS_MODEL_NAME, api_key=st.secrets["TOGETHER_API_
115 │ )
116 │ st.text(os.listdir())
❱ 117 │ vectorstore = Chroma(
118 │ │ persist_directory=VECSTORE_PERSIST_DIRECTORY, embedding_functi
119 │ )
120 │ st.session_state.retriever = vectorstore.as_retriever(
/home/adminuser/venv/lib/python3.11/site-packages/langchain_chroma/vectorsto
res.py:313 in __init__
310 │ │ │ else:
311 │ │ │ │ _client_settings = chromadb.config.Settings()
312 │ │ │ self._client_settings = _client_settings
❱ 313 │ │ │ self._client = chromadb.Client(_client_settings)
314 │ │ │ self._persist_directory = (
315 │ │ │ │ _client_settings.persist_directory or persist_directo
316 │ │ │ )
/home/adminuser/venv/lib/python3.11/site-packages/chromadb/__init__.py:334
in Client
331 │ tenant = str(tenant)
332 │ database = str(database)
333 │
❱ 334 │ return ClientCreator(tenant=tenant, database=database, settings=se
335
336
337 def AdminClient(settings: Settings = Settings()) -> AdminAPI:
/home/adminuser/venv/lib/python3.11/site-packages/chromadb/api/client.py:56
in __init__
53 │ │ database: str = DEFAULT_DATABASE,
54 │ │ settings: Settings = Settings(),
55 │ ) -> None:
❱ 56 │ │ super().__init__(settings=settings)
57 │ │ self.tenant = tenant
58 │ │ self.database = database
59 │ │ # Create an admin client for verifying that databases and tena
/home/adminuser/venv/lib/python3.11/site-packages/chromadb/api/shared_system
_client.py:19 in __init__
16 │ │ settings: Settings = Settings(),
17 │ ) -> None:
18 │ │ self._identifier = SharedSystemClient._get_identifier_from_sett
❱ 19 │ │ SharedSystemClient._create_system_if_not_exists(self._identifie
20 │
21 │ @classmethod
22 │ def _create_system_if_not_exists(
/home/adminuser/venv/lib/python3.11/site-packages/chromadb/api/shared_system
_client.py:32 in _create_system_if_not_exists
29 │ │ │ new_system.instance(ProductTelemetryClient)
30 │ │ │ new_system.instance(ServerAPI)
31 │ │ │
❱ 32 │ │ │ new_system.start()
33 │ │ else:
34 │ │ │ previous_system = cls._identifier_to_system[identifier]
35
/home/adminuser/venv/lib/python3.11/site-packages/chromadb/config.py:429 in
start
426 │ def start(self) -> None:
427 │ │ super().start()
428 │ │ for component in self.components():
❱ 429 │ │ │ component.start()
430 │
431 │ @override
432 │ def stop(self) -> None:
/home/adminuser/venv/lib/python3.11/site-packages/chromadb/telemetry/opentel
emetry/__init__.py:146 in wrapper
143 │ │ │ def wrapper(*args, **kwargs):
144 │ │ │ │ global tracer, granularity
145 │ │ │ │ if trace_granularity < granularity:
❱ 146 │ │ │ │ │ return f(*args, **kwargs)
147 │ │ │ │ if not tracer:
148 │ │ │ │ │ return f(*args, **kwargs)
149 │ │ │ │ with tracer.start_as_current_span(trace_name, attribut
/home/adminuser/venv/lib/python3.11/site-packages/chromadb/db/impl/sqlite.py
:104 in start
101 │ │ with self.tx() as cur:
102 │ │ │ cur.execute("PRAGMA foreign_keys = ON")
103 │ │ │ cur.execute("PRAGMA case_sensitive_like = ON")
❱ 104 │ │ self.initialize_migrations()
105 │ │
106 │ │ if (
107 │ │ │ # (don't attempt to access .config if migrations haven't b
/home/adminuser/venv/lib/python3.11/site-packages/chromadb/db/migrations.py:
140 in initialize_migrations
137 │ │ │ self.validate_migrations()
138 │ │
139 │ │ if migrate == "apply":
❱ 140 │ │ │ self.apply_migrations()
141 │
142 │ @trace_method("MigratableDB.validate_migrations", OpenTelemetryGra
143 │ def validate_migrations(self) -> None:
/home/adminuser/venv/lib/python3.11/site-packages/chromadb/telemetry/opentel
emetry/__init__.py:146 in wrapper
143 │ │ │ def wrapper(*args, **kwargs):
144 │ │ │ │ global tracer, granularity
145 │ │ │ │ if trace_granularity < granularity:
❱ 146 │ │ │ │ │ return f(*args, **kwargs)
147 │ │ │ │ if not tracer:
148 │ │ │ │ │ return f(*args, **kwargs)
149 │ │ │ │ with tracer.start_as_current_span(trace_name, attribut
/home/adminuser/venv/lib/python3.11/site-packages/chromadb/db/migrations.py:
165 in apply_migrations
162 │ @trace_method("MigratableDB.apply_migrations", OpenTelemetryGranul
163 │ def apply_migrations(self) -> None:
164 │ │ """Validate existing migrations, and apply all new ones."""
❱ 165 │ │ self.setup_migrations()
166 │ │ for dir in self.migration_dirs():
167 │ │ │ db_migrations = self.db_migrations(dir)
168 │ │ │ source_migrations = find_migrations(
/home/adminuser/venv/lib/python3.11/site-packages/chromadb/telemetry/opentel
emetry/__init__.py:146 in wrapper
143 │ │ │ def wrapper(*args, **kwargs):
144 │ │ │ │ global tracer, granularity
145 │ │ │ │ if trace_granularity < granularity:
❱ 146 │ │ │ │ │ return f(*args, **kwargs)
147 │ │ │ │ if not tracer:
148 │ │ │ │ │ return f(*args, **kwargs)
149 │ │ │ │ with tracer.start_as_current_span(trace_name, attribut
/home/adminuser/venv/lib/python3.11/site-packages/chromadb/db/impl/sqlite.py
:171 in setup_migrations
168 │ @override
169 │ def setup_migrations(self) -> None:
170 │ │ with self.tx() as cur:
❱ 171 │ │ │ cur.execute(
172 │ │ │ │ """
173 │ │ │ │ │ CREATE TABLE IF NOT EXISTS migrations (
174 │ │ │ │ │ │ dir TEXT NOT NULL,
────────────────────────────────────────────────────────────────────────────────
DatabaseError: file is not a database
2024-10-13 22:03:55.900 503 GET /script-health-check (127.0.0.1) 540.93ms