DuplicatePropertyError:类class_name已具有属性property_name

时间:2013-06-07 15:41:36

标签: google-app-engine python-2.7

我正在使用Eclipse + PyDev在Mac上为GAE-Python 2.7开发,自从SDK 1.7.6(引入新的dev_appserver)以来,我有一个“DuplicatePropertyError”4次中有4次(在执行第一个请求时的平均值)。此外,即使第一个请求正常,错误也可能出现在以后的请求中。

这个错误只发生在开发中(在生产中一切都很顺利),在1.7.6之前,我从未有过这个错误。

我没有过多关注这个问题,因为到目前为止,我正在使用old_dev_appserver以便能够继续调试我的应用程序(Google在新版本中使用stdin / stdout for ipc打破了对pydevd的支持开发服务器)。但是,由于旧的开发服务器将从7月1日起被删除,我认为是时候开始使用新服务器: - )。

还有其他人遇到过这个问题吗?任何解决方案/解决方法?

File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/db/__init__.py", line 515, in __init__
_initialize_properties(cls, name, bases, dct)
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/db/__init__.py", line 430, in _initialize_properties
attr.__property_config__(model_class, attr_name)
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/db/__init__.py", line 3686, in __property_config__
self.collection_name))
DuplicatePropertyError: Class Organization already has property wagesheetrow_set 
INFO     2013-06-07 15:13:54,864 server.py:585] default: "GET / HTTP/1.1" 500 -

1 个答案:

答案 0 :(得分:4)

想出来了!显然,在创建ReferenceProperty时会出现错误,而不会给它一个明确的collection_name。

例如,这可能会触发错误:

class WageSheetRow(db.Model):
    organization = db.ReferenceProperty(Organization)

这是正确的方法:

class WageSheetRow(db.Model):
    organization = db.ReferenceProperty(Organization, collection_name='aName')

以前从未发生旧服务器,但显然,新服务器(1.7.6+)已经改变了初始化实例的方式。

还要提到的是,完全相同的代码可能会在一台特定的机器中触发错误,而在另一台机器上运行完全相同的代码则不会。

相关问题