Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Telethon: OperationalError: database is locked

Apologies if it is a silly question.

I am trying telethon for the first time and it fails to synchronize with my telegram API.

I get an IP address when I type this code: enter image description here

But I get this message when I try to connect to start or connect the client:

enter image description here

And finally, I get OperationalError: database is locked error when I try to log in using my phone.

enter image description here

The error message in full:

-------------------------------------------------------------------- 

OperationalError Traceback (most recent 
 call last)
<ipython-input-13-880bc0e4ea12> in <module>()
  1 from telethon import TelegramClient, sync
 ----> 2 client = TelegramClient('session_name', api_id, api_hash)
  3 
  4 client.connect()
  5 if not client.is_user_authorized():

 /anaconda3/lib/python3.7/site- 
 packages/telethon/client/telegrambaseclient.py in __init__(self, 
 session, api_id, api_hash, connection, use_ipv6, proxy, timeout, 
 request_retries, connection_retries, retry_delay, auto_reconnect, 
 sequential_updates, flood_sleep_threshold, device_model, 
 system_version, app_version, lang_code, system_lang_code, loop, 
 base_logger)
 221                 DEFAULT_DC_ID,
 222                 DEFAULT_IPV6_IP if self._use_ipv6 else 
 DEFAULT_IPV4_IP,
 --> 223                 DEFAULT_PORT
 224             )
 225 

 /anaconda3/lib/python3.7/site-packages/telethon/sessions/sqlite.py 
 in set_dc(self, dc_id, server_address, port)
184     def set_dc(self, dc_id, server_address, port):
185         super().set_dc(dc_id, server_address, port)
--> 186         self._update_session_table()
187 
188         # Fetch the auth_key corresponding to this data center

/anaconda3/lib/python3.7/site-packages/telethon/sessions/sqlite.py 
in _update_session_table(self)
205         # some more work before being able to save auth_key's 
 for

206         # multiple DCs. Probably done differently.
 --> 207         c.execute('delete from sessions')
208         c.execute('insert or replace into sessions values 
(?,?,?,?)', (
209             self._dc_id,

OperationalError: database is locked

What does coroutine object AuthMethods._start at mean? Why is it giving database is locked?

like image 563
J.Doe Avatar asked Jun 18 '26 17:06

J.Doe


1 Answers

Referring to the Telethon documentation, The database will be locked if you don't close it properly.

In your case, you are using the same session file from many TelegramClient's at once.

First

In [9] client.start()

TelegramClient started

Second

In [13] client.connect()

TelegramClient's already active

This also causes the database is locked error. More info:

like image 90
Ma'ruf Avatar answered Jun 20 '26 09:06

Ma'ruf



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!