从脚本填充数据库时出现 Django Heroku DataError
Posted
技术标签:
【中文标题】从脚本填充数据库时出现 Django Heroku DataError【英文标题】:Django Heroku DataError when populating database from script 【发布时间】:2018-01-24 09:09:24 【问题描述】:我制作了一个脚本,它可以读取 xml 文件并从中填充数据库。当我在本地运行它时,它没有问题。但是当我在 heroku 上运行它时,它会通过并填充一些数据(正好 6 个对象),然后抛出这个错误:
skripta_vnos.py
是我在 shell 中运行的填充脚本
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/app/skripta_vnos.py", line 97, in <module>
dob.save()
File "/app/.heroku/python/lib/python2.7/site-packages/django/db/models/base.py", line 806, in save
force_update=force_update, update_fields=update_fields)
File "/app/.heroku/python/lib/python2.7/site-packages/django/db/models/base.py", line 836, in save_base
updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)
File "/app/.heroku/python/lib/python2.7/site-packages/django/db/models/base.py", line 922, in _save_table
result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
File "/app/.heroku/python/lib/python2.7/site-packages/django/db/models/base.py", line 961, in _do_insert
using=using, raw=raw)
File "/app/.heroku/python/lib/python2.7/site-packages/django/db/models/manager.py", line 85, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/app/.heroku/python/lib/python2.7/site-packages/django/db/models/query.py", line 1063, in _insert
return query.get_compiler(using=using).execute_sql(return_id)
File "/app/.heroku/python/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 1099, in execute_sql
cursor.execute(sql, params)
File "/app/.heroku/python/lib/python2.7/site-packages/django/db/backends/utils.py", line 80, in execute
return super(CursorDebugWrapper, self).execute(sql, params)
File "/app/.heroku/python/lib/python2.7/site-packages/django/db/backends/utils.py", line 65, in execute
return self.cursor.execute(sql, params)
File "/app/.heroku/python/lib/python2.7/site-packages/django/db/utils.py", line 94, in __exit__
six.reraise(dj_exc_type, dj_exc_value, traceback)
File "/app/.heroku/python/lib/python2.7/site-packages/django/db/backends/utils.py", line 65, in execute
return self.cursor.execute(sql, params)
DataError: value too long for type character varying(100)
我的模型如下所示:
class Supply(models.Model):
name = models.CharField(max_length=255)
maticna = models.CharField(max_length=255)
organ = models.CharField(max_length=255, null=True, blank=True)
pos = models.CharField(max_length=255, null=True, blank=True)
city = models.CharField(max_length=255, null=True, blank=True)
postn= models.CharField(max_length=255, null=True, blank=True)
hisna = models.CharField(max_length=255, null=True, blank=True)
email = models.CharField(max_length=255, null=True, blank=True)
def __str__(self):
return self.name.encode("utf-8")
def get_absolute_url(self):
return reverse('supply-detail', args=[str(self.id)])
【问题讨论】:
你之前换过型号了吗? 【参考方案1】:您收到此错误是因为您的字符串之一大于最大长度。 如果它在本地工作,您可能更改了最大长度并且没有在 Heroku 上迁移您的更改。
【讨论】:
【参考方案2】:就像 shlomta1 说的你的字符串大于最大长度。尝试运行heroku run python manage.py migrate
,这样你也可以将这些最大长度应用到你的 Heroku 数据库中
【讨论】:
以上是关于从脚本填充数据库时出现 Django Heroku DataError的主要内容,如果未能解决你的问题,请参考以下文章
heroku 中的 Django Redis 连接错误:写入套接字时出现错误 110。连接超时
运行“工头启动”/将 Django 应用程序部署到 Heroku 时出现问题
PySFTP失败,“在部署Django / Heroku时出现”找不到主机X的主机密钥”
Django + pyamf:从动作脚本应用程序调用网关时出现奇怪的异常