meeb / tubesync

Syncs YouTube channels and playlists to a locally hosted media server
GNU Affero General Public License v3.0
1.97k stars 126 forks source link

Error: Data too long for column 'title' at row 1 #518

Closed RichardHyde closed 4 months ago

RichardHyde commented 4 months ago

Since updating to the latest build I've been getting an error Data too long for column 'title' at row 1 which wasn't happening with the v0.13.6 release.

I've gotten the error from two sources, Linus Tech Tips and MKBHD, and seems to be happening when running the sync.tasks.index_source_task task.

I'm running an external MySQL database, but I've not made any changes to the table structure since setting it up.

The error from background_task is :-

Traceback (most recent call last):                                                                                                                               
  File "/usr/local/lib/python3.11/dist-packages/django/db/backends/utils.py", line 84, in _execute                                                         
    return self.cursor.execute(sql, params)                                                                                                                
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                                                                                
  File "/usr/local/lib/python3.11/dist-packages/django/db/backends/mysql/base.py", line 73, in execute                                                     
    return self.cursor.execute(query, args)                                                                                                                
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                                                                                
  File "/usr/local/lib/python3.11/dist-packages/MySQLdb/cursors.py", line 179, in execute                                                                  
    res = self._query(mogrified_query)                                                                                                                     
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                                                                                     
  File "/usr/local/lib/python3.11/dist-packages/MySQLdb/cursors.py", line 330, in _query                                                                   
    db.query(q)                                                                                                                                            
  File "/usr/local/lib/python3.11/dist-packages/MySQLdb/connections.py", line 261, in query                                                                
    _mysql.connection.query(self, query)                                                                                                                   
MySQLdb.DataError: (1406, "Data too long for column 'title' at row 1")                                                                                     

The above exception was the direct cause of the following exception:                                                                                       

Traceback (most recent call last):                                                                                                                         
  File "/usr/local/lib/python3.11/dist-packages/background_task/tasks.py", line 43, in bg_runner                                                           
    func(*args, **kwargs)                                                                                                                                  
  File "/app/sync/tasks.py", line 193, in index_source_task                                                                                                
    media.save()                                                                                                                                           
  File "/app/sync/models.py", line 918, in save                                                                                                            
    super().save(                                                                                                                                          
  File "/usr/local/lib/python3.11/dist-packages/django/db/models/base.py", line 739, in save                                                               
    self.save_base(using=using, force_insert=force_insert,                                                                                                 
  File "/usr/local/lib/python3.11/dist-packages/django/db/models/base.py", line 776, in save_base                                                          
    updated = self._save_table(                                                                                                                            
              ^^^^^^^^^^^^^^^^^                                                                                                                            
  File "/usr/local/lib/python3.11/dist-packages/django/db/models/base.py", line 858, in _save_table                                                        
    updated = self._do_update(base_qs, using, pk_val, values, update_fields,
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/django/db/models/base.py", line 912, in _do_update
    return filtered._update(values) > 0
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/django/db/models/query.py", line 802, in _update
    return query.get_compiler(self.db).execute_sql(CURSOR)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/django/db/models/sql/compiler.py", line 1559, in execute_sql
    cursor = super().execute_sql(result_type)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/django/db/models/sql/compiler.py", line 1175, in execute_sql
    cursor.execute(sql, params)
  File "/usr/local/lib/python3.11/dist-packages/django/db/backends/utils.py", line 66, in execute
    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute) 
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/django/db/backends/utils.py", line 75, in _execute_with_wrappers
    return executor(sql, params, many, context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/django/db/backends/utils.py", line 79, in _execute
    with self.db.wrap_database_errors: 
  File "/usr/local/lib/python3.11/dist-packages/django/db/utils.py", line 90, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "/usr/local/lib/python3.11/dist-packages/django/db/backends/utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/django/db/backends/mysql/base.py", line 73, in execute
    return self.cursor.execute(query, args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/MySQLdb/cursors.py", line 179, in execute
    res = self._query(mogrified_query) 
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
  File "/usr/local/lib/python3.11/dist-packages/MySQLdb/cursors.py", line 330, in _query
    db.query(q)
  File "/usr/local/lib/python3.11/dist-packages/MySQLdb/connections.py", line 261, in query
    _mysql.connection.query(self, query)
django.db.utils.DataError: (1406, "Data too long for column 'title' at row 1")

Let me know if you need any more information, or need me to try something.

meeb commented 4 months ago

Thanks for the issue. This was introduced with a recent feature patch (#515), the above commit should correct it and will be in :latest once the new image builds.