MSp*_*Dev 6 bash go google-cloud-datastore google-cloud-platform gcloud
大家好,
背景信息:我dev_appserver在去年年底 2021 年进行了此设置,在尝试再次设置它时,我遇到了奇怪的错误。
BadArgumentError: app must not be empty.
到目前为止,我已经解决了很多错误,这就是我所处的位置:
Cloud Datastore Emulator)gops& dev_appserver.py - go build)
我dev_appserver这样运行:
export DATASTORE_DATASET=dev8celbux
export DATASTORE_PROJECT_ID=dev8celbux
export DATASTORE_USE_PROJECT_ID_AS_APP_ID=true
Run Code Online (Sandbox Code Playgroud)
dev_appserver.py --enable_console --admin_port=8001 --port=8081 --go_debugging=true --support_datastore_emulator=true --datastore_path=./datastore/local_db.bin setuptables-app.yaml
INFO 2022-09-09 13:26:30,233 devappserver2.py:317] Skipping SDK update check.
INFO 2022-09-09 13:26:30,250 datastore_emulator.py:156] Starting Cloud Datastore emulator at: http://localhost:58946
INFO 2022-09-09 13:26:32,381 datastore_emulator.py:162] Cloud Datastore emulator responded after 2.131000 seconds
INFO 2022-09-09 13:26:32,381 <string>:384] Starting API server at: http://localhost:59078
INFO 2022-09-09 13:26:32,384 <string>:374] Starting gRPC API server at: http://localhost:59079
INFO 2022-09-09 13:26:32,394 instance_factory.py:184] Building with dependencies from go.mod.
INFO 2022-09-09 13:26:32,397 dispatcher.py:280] Starting module "setuptables" running at: http://localhost:8081
INFO 2022-09-09 13:26:32,397 admin_server.py:70] Starting admin server at: http://localhost:8001
WARNING 2022-09-09 13:26:32,398 devappserver2.py:414] No default module found. Ignoring.
2022/09/09 13:26:35 STARTING
INFO 2022-09-09 13:26:37,220 instance.py:294] Instance PID: 9656
Run Code Online (Sandbox Code Playgroud)
当我尝试查看本地数据存储中的内容时,会出现此错误localhost:8001/datastore。
Traceback (most recent call last):
File "C:\Users\user\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\lib\webapp2\webapp2\__init__.py", line 1526, in __call__
rv = self.handle_exception(request, response, e)
File "C:\Users\user\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\lib\webapp2\webapp2\__init__.py", line 1520, in __call__
rv = self.router.dispatch(request, response)
File "C:\Users\user\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\lib\webapp2\webapp2\__init__.py", line 1270, in default_dispatcher
return route.handler_adapter(request, response)
File "C:\Users\user\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\lib\webapp2\webapp2\__init__.py", line 1094, in __call__
return handler.dispatch()
File "C:\Users\user\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\tools\devappserver2\admin\admin_request_handler.py", line 88, in dispatch
super(AdminRequestHandler, self).dispatch()
File "C:\Users\user\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\lib\webapp2\webapp2\__init__.py", line 588, in dispatch
return self.handle_exception(e, self.app.debug)
File "C:\Users\user\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\lib\webapp2\webapp2\__init__.py", line 586, in dispatch
return method(*args, **kwargs)
File "C:\Users\user\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\tools\devappserver2\admin\datastore_viewer.py", line 661, in get
kinds = self._get_kinds(namespace)
File "C:\Users\user\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\tools\devappserver2\admin\datastore_viewer.py", line 597, in _get_kinds
return sorted([x.kind_name for x in q.run()])
File "C:\Users\user\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\ext\db\__init__.py", line 2077, in run
raw_query = self._get_query()
File "C:\Users\user\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\ext\db\__init__.py", line 2482, in _get_query
_app=self._app)
File "C:\Users\user\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\api\datastore.py", line 1371, in __init__
self.__app = datastore_types.ResolveAppId(_app)
File "C:\Users\user\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\api\datastore_types.py", line 238, in ResolveAppId
ValidateString(app, 'app', datastore_errors.BadArgumentError)
File "C:\Users\user\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\api\datastore_types.py", line 186, in ValidateString
raise exception('%s must not be empty.' % name)
BadArgumentError: app must not be empty.
Run Code Online (Sandbox Code Playgroud)
我发现这与APPLICATION_ID缺少环境变量有一定关系。设置后,我可以查看数据库页面。然而。当将我的数据写入模拟器时没有错误(逐行调试以确认并local_db.bin创建),在查看数据时,什么也没有。从代码的角度来看,我成功编写了 15 个实体。但是,管理页面上没有显示任何内容。我认为这是由于手动设置造成的,APPLICATION_ID因为我以前没有这样做过。也许应该以某种方式自动进行。认为这个环境变量也许可以做到这一点:export DATASTORE_USE_PROJECT_ID_AS_APP_ID=true但似乎没有改变任何东西。
在调用实体创建之前:
调用实体创建后:
我这样写数据,毫无疑问这是正确的。
ctx, err := appengine.Namespace(appengine.BackgroundContext(), "celbux101")
...
userKeyOut, err := datastore.Put(ctx, userKey, &F1_4{...})
Run Code Online (Sandbox Code Playgroud)
另外,查看default& 指定的命名空间 ( celbux101):
超级难住。:( 帮助表示赞赏!
我真的认为这可能与APPLICATION_ID
MSp*_*Dev 17
...我设法找到了解决方案!正如所怀疑的,数据被正确写入,正如逐行调试和local_db.bin. 问题是,dev_appserver由于推导的错误或缺失,用户界面无法显示数据库实体APPLICATION_ID。
我发现 的dev_appserverUI 使用APPLICATION_ID&namespace来确定在哪里查找实体。此外,它dev_appserver还有自己的默认值APPLICATION_ID。
修复方法是在运行dev_appserver.py.
export APPLICATION_ID=dev~None
这种神奇的导出可以让一切按预期工作。APPLICATION_ID您可以在界面的左上角查看UI 尝试使用的 。
编辑:我刚刚回来在一台新计算机上运行它,并想添加它以供将来参考:
如果你得到IOError: emulator did not respond within 10s
安装 Python27 并添加到您的路径!(与你捆绑的 python 一起)
| 归档时间: |
|
| 查看次数: |
1382 次 |
| 最近记录: |