GAE - 我无法清除数据存储并且数据存储已损坏,我相信 [英] GAE - I can't clear datastore and the datastore is corrupted I believe

查看:176
本文介绍了GAE - 我无法清除数据存储并且数据存储已损坏,我相信的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

不知怎的,我的本地数据存储已损坏,我想清除它,但我没有这样做。



我似乎无法运行任何使用数据存储的代码,因为它是在错误状态。



我使用以下commnand:

dev_appserver.py - clear_datastore GoogleAppEngine
其中GoogleAppEngine是我的应用文件夹



这里是控制台上的日志:



,因为我使用的是GO而不是JAVA,所以无法在任何地方找到并删除像
./WEB-INF/appengine-generated/local_db.bin这样的文件。

  M:\ nick \svn\ projects> dev_appserver.py --clear_datastore GoogleAppEngine 
Traceback(最近一次调用最后一次):
文件M:\Softwares\Dev Tools\SDK\google_appengine\dev_appserver.py,第182行,位于< module>
_run_file(__ file__,globals())
文件M:\Softwares\Dev Tools\SDK\google_appengine\dev_appserver.py,第178行,位于_run_file
execfile (script_path,globals_)
文件M:\Softwares\Dev Tools\SDK\google_appengine\google\appengine\tools\devappserver2\devappserver2.py,第689行,放在< ;模块>
main()
文件M:\Softwares\Dev Tools\SDK\google_appengine\google\appengine\tools\devappserver2\devappserver2.py,第679行,在主
选项= PARSER.parse_args()
文件C:\Python27\lib\argparse.py,第1688行,在parse_args
args,argv = self.parse_known_args (args,namespace)
在parse_known_args
命名空间中,args = self._parse_known_args(args,namespace)$ b $的文件C:\Python27\lib\argparse.py,第1720行b文件C:\Python27\lib\argparse.py,第1926行,在_parse_known_args
start_index = consume_optional(start_index)
文件C:\Python27\lib\argparse .py,第1866行,在consume_optional
take_action(action,args,option_string)
文件C:\Python27\lib\argparse.py,行1794,在take_action
操作(self,namespace,argument_values,option_string)
文件M:\ Software \De v Tools \SDK\google_appengine\google\appengine\tools\boolean_action.py,第67行,在__call__
中增加ValueError('必须是yes或no,而不是%r '%values)
ValueError:必须是yes或no,而不是'GoogleAppEngine'

M:\ nick \svn\projects> dev_appserver.py --clear_datastore GoogleAppEngine

以下是我尝试访问DataStore Viewer页面时的屏幕内容。

  Traceback(最近一次调用最后一次):
文件M:\ Software \Dev Tools\SDK\google_appengine\\ \\ lib\webapp2-2.5.1\webapp2.py,第1536行,在__call__
中rv = self.handle_exception(request,response,e)
文件M:\ Software \\ Dev Tools \SDK\google_appengine\lib\webapp2-2.5.1\webapp2.py,第1530行,在__call__
中rv = self.router.dispatch(request,response)
文件M:\ Software \Dev Tools\SDK\ google_appengine\lib\webapp2-2.5.1\webapp2.py,第1278行,在default_dispatcher
中返回route.handler_adapter(请求,响应)
文件M:\ Software \Dev Tools \SDK\google_appengine\lib\webapp2-2.5.1\webapp2.py,第1102行,在__call__
中返回handler.dispatch()
文件M:\Softwares \Dev Tools\SDK\google_appengine\google\appengine\tools\devappserver2\admin\admin_request_handler.py,第95行,分派
super(AdminRequestHandler,self).dispatch( )
文件M:\Softwares\Dev Tools\SDK\google_appengine\lib\webapp2-2.5.1\webapp2.py,第572行,发送
返回自我.handle_exception(e,self.app.debug)
文件M:\Softwares\Dev Tools\SDK\google_appengine\lib\webapp2-2.5.1\webapp2.py,行570,发送
返回方法(* args,** kwargs)
文件M:\Softwar es \Dev Tools\SDK\google_appengine\google\appengine\tools\devappserver2\admin\datastore_viewer.py,第721行,获得
start))
文件M:\ Software \Dev Tools\SDK\google_appengine\google\appengine\tools\devappserver2\admin\datastore_viewer.py,第658行,位于_get_entity_template_data
cls.NUM_ENTITIES_PER_PAGE )
文件M:\ Software \Dev Tools\SDK\google_appengine\google\appengine\tools\devappserver2\admin\datastore_viewer.py,行131,在_get_entities
entities = query.Get(count,start)
文件M:\ Software \Dev Tools\SDK\google_appengine\google\appengine\api\datastore.py,第1674行,在Get
返回列表(self.Run(limit = limit,offset = offset,** kwargs))
文件M:\ Software \Dev Tools\SDK\google_appengine \google\appengine\dat astore\datastore_query.py,第2892行,在下一个
next_batch = self .__ batcher.next()
文件M:\ Software \Dev Tools\SDK\google_appengine\google \appengine\datastore\datastore_query.py,第2754行,在
中返回self.next_batch(self.AT_LEAST_ONE)
文件M:\ Software \Dev Tools\SDK\\ \\ google_appengine \google \appengine\datastore\datastore_query.py,第2791行,​​在next_batch中
batch = self .__ next_batch.get_result()
文件M:\ Software \Dev Tools \SDK\google_appengine\google\appengine\api\apiproxy_stub_map.py,第604行,在get_result中
返回self .__ get_result_hook(self)
文件M:\Softwares \Dev Tools\SDK\google_appengine\google\appengine\datastore\datastore_query.py,第2558行,在__query_result_hook
self .__ results = self._process_results(query_result.result_list())
文件M:\Softwares\Dev Tools\SDK\google_appengine\google\appengine\datastore\datastore_query.py,第2591行,在_process_results
中查找结果]
文件M:\ Software \Dev Tools\SDK\google_appengine\google\appengine\datastore\datastore_rpc.py,第156行,在pb_to_query_result
中返回self.pb_to_entity(pb)
文件M:\Softwares\Dev Tools\SDK\google_appengine\google\appengine\api\datastore.py,第347行,在pb_to_entity
中返回Entity._FromPb (pb)
文件M:\ Software \Dev Tools\SDK\google_appengine\google\appengine\api\datastore.py,行1126,在_FromPb
( prop.name(),traceback.format_exc()))
错误:属性IdString在数据存储区中损坏:
Traceback(最近一次调用最后一次):
文件M:\Softwares \Dev Tools\SDK\google_appengine\google \\appengine\api\datastore.py,第1122行,在_FromPb
value = datastore_types.FromPropertyPb(prop)
文件M:\ Software \Dev Tools\SDK\google_appengine \google\appengine\api\datastore_types.py,第1847行,来自FromPropertyPb
值= unicode(值,'utf-8')
UnicodeDecodeError:'utf8'编解码器不能在位置14解码字节0xcc:无效延续字节

我不明白我为什么以及如何破解数据存储。
我正在用Go学习GAE,这个事件真的吓到我了......

解决方案

你做错了什么。您已通过 - clear_datastore GoogleAppEngine ,但期望 - clear_datastore = yes GoogleAppEngine (或否) 。



正确的语法是记录在案


Somehow my local datastore is broken and I want to clear it but I failed to do so.

I seems can't run any code that use datastore now because it is in error state.

I use the following commnand:

dev_appserver.py --clear_datastore GoogleAppEngine where GoogleAppEngine is my app folder

and here is the log on the console:

and since I am using GO instead of JAVA, I can't find and delete file like ./WEB-INF/appengine-generated/local_db.bin anywhere.

M:\nick\svn\projects>dev_appserver.py --clear_datastore GoogleAppEngine
Traceback (most recent call last):
  File "M:\Softwares\Dev Tools\SDK\google_appengine\dev_appserver.py", line 182, in <module>
    _run_file(__file__, globals())
  File "M:\Softwares\Dev Tools\SDK\google_appengine\dev_appserver.py", line 178, in _run_file
    execfile(script_path, globals_)
  File "M:\Softwares\Dev Tools\SDK\google_appengine\google\appengine\tools\devappserver2\devappserver2.py", line 689, in <module>
    main()
  File "M:\Softwares\Dev Tools\SDK\google_appengine\google\appengine\tools\devappserver2\devappserver2.py", line 679, in main
    options = PARSER.parse_args()
  File "C:\Python27\lib\argparse.py", line 1688, in parse_args
    args, argv = self.parse_known_args(args, namespace)
  File "C:\Python27\lib\argparse.py", line 1720, in parse_known_args
    namespace, args = self._parse_known_args(args, namespace)
  File "C:\Python27\lib\argparse.py", line 1926, in _parse_known_args
    start_index = consume_optional(start_index)
  File "C:\Python27\lib\argparse.py", line 1866, in consume_optional
    take_action(action, args, option_string)
  File "C:\Python27\lib\argparse.py", line 1794, in take_action
    action(self, namespace, argument_values, option_string)
  File "M:\Softwares\Dev Tools\SDK\google_appengine\google\appengine\tools\boolean_action.py", line 67, in __call__
    raise ValueError('must be "yes" or "no", not %r' % values)
ValueError: must be "yes" or "no", not 'GoogleAppEngine'

M:\nick\svn\projects>dev_appserver.py --clear_datastore GoogleAppEngine

And here is the screen content when I try to visit the DataStore Viewer page.

Traceback (most recent call last):
  File "M:\Softwares\Dev Tools\SDK\google_appengine\lib\webapp2-2.5.1\webapp2.py", line 1536, in __call__
    rv = self.handle_exception(request, response, e)
  File "M:\Softwares\Dev Tools\SDK\google_appengine\lib\webapp2-2.5.1\webapp2.py", line 1530, in __call__
    rv = self.router.dispatch(request, response)
  File "M:\Softwares\Dev Tools\SDK\google_appengine\lib\webapp2-2.5.1\webapp2.py", line 1278, in default_dispatcher
    return route.handler_adapter(request, response)
  File "M:\Softwares\Dev Tools\SDK\google_appengine\lib\webapp2-2.5.1\webapp2.py", line 1102, in __call__
    return handler.dispatch()
  File "M:\Softwares\Dev Tools\SDK\google_appengine\google\appengine\tools\devappserver2\admin\admin_request_handler.py", line 95, in dispatch
    super(AdminRequestHandler, self).dispatch()
  File "M:\Softwares\Dev Tools\SDK\google_appengine\lib\webapp2-2.5.1\webapp2.py", line 572, in dispatch
    return self.handle_exception(e, self.app.debug)
  File "M:\Softwares\Dev Tools\SDK\google_appengine\lib\webapp2-2.5.1\webapp2.py", line 570, in dispatch
    return method(*args, **kwargs)
  File "M:\Softwares\Dev Tools\SDK\google_appengine\google\appengine\tools\devappserver2\admin\datastore_viewer.py", line 721, in get
    start))
  File "M:\Softwares\Dev Tools\SDK\google_appengine\google\appengine\tools\devappserver2\admin\datastore_viewer.py", line 658, in _get_entity_template_data
    cls.NUM_ENTITIES_PER_PAGE)
  File "M:\Softwares\Dev Tools\SDK\google_appengine\google\appengine\tools\devappserver2\admin\datastore_viewer.py", line 131, in _get_entities
    entities = query.Get(count, start)
  File "M:\Softwares\Dev Tools\SDK\google_appengine\google\appengine\api\datastore.py", line 1674, in Get
    return list(self.Run(limit=limit, offset=offset, **kwargs))
  File "M:\Softwares\Dev Tools\SDK\google_appengine\google\appengine\datastore\datastore_query.py", line 2892, in next
    next_batch = self.__batcher.next()
  File "M:\Softwares\Dev Tools\SDK\google_appengine\google\appengine\datastore\datastore_query.py", line 2754, in next
    return self.next_batch(self.AT_LEAST_ONE)
  File "M:\Softwares\Dev Tools\SDK\google_appengine\google\appengine\datastore\datastore_query.py", line 2791, in next_batch
    batch = self.__next_batch.get_result()
  File "M:\Softwares\Dev Tools\SDK\google_appengine\google\appengine\api\apiproxy_stub_map.py", line 604, in get_result
    return self.__get_result_hook(self)
  File "M:\Softwares\Dev Tools\SDK\google_appengine\google\appengine\datastore\datastore_query.py", line 2558, in __query_result_hook
    self.__results = self._process_results(query_result.result_list())
  File "M:\Softwares\Dev Tools\SDK\google_appengine\google\appengine\datastore\datastore_query.py", line 2591, in _process_results
    for result in results]
  File "M:\Softwares\Dev Tools\SDK\google_appengine\google\appengine\datastore\datastore_rpc.py", line 156, in pb_to_query_result
    return self.pb_to_entity(pb)
  File "M:\Softwares\Dev Tools\SDK\google_appengine\google\appengine\api\datastore.py", line 347, in pb_to_entity
    return Entity._FromPb(pb)
  File "M:\Softwares\Dev Tools\SDK\google_appengine\google\appengine\api\datastore.py", line 1126, in _FromPb
    (prop.name(), traceback.format_exc()))
Error: Property IdString is corrupt in the datastore:
Traceback (most recent call last):
  File "M:\Softwares\Dev Tools\SDK\google_appengine\google\appengine\api\datastore.py", line 1122, in _FromPb
    value = datastore_types.FromPropertyPb(prop)
  File "M:\Softwares\Dev Tools\SDK\google_appengine\google\appengine\api\datastore_types.py", line 1847, in FromPropertyPb
    value = unicode(value, 'utf-8')
UnicodeDecodeError: 'utf8' codec can't decode byte 0xcc in position 14: invalid continuation byte

I don't understand why and how i can broke the datastore. I am learning GAE with Go and this event really scare me...

解决方案

The first traceback tells you exactly what you're doing wrong. You've passed --clear_datastore GoogleAppEngine, but it's expecting --clear_datastore=yes GoogleAppEngine (or 'no').

The correct syntax is documented.

这篇关于GAE - 我无法清除数据存储并且数据存储已损坏,我相信的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆