Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 应用引擎数据存储不一致?_Google App Engine_Google Cloud Datastore - Fatal编程技术网

Google app engine 应用引擎数据存储不一致?

Google app engine 应用引擎数据存储不一致?,google-app-engine,google-cloud-datastore,Google App Engine,Google Cloud Datastore,这太奇怪了 首先,该查询在数据存储查看器中工作,即返回正确的行 SELECT * FROM Level where short_id = 'Ec71eN' 但是如果我运行这个 Level.all().filter("short_id = ", 'Ec71eN').get() 如果我运行以下命令,它将返回None: db.GqlQuery("SELECT * FROM Level where short_id = '%s'" % 'Ec71eN').get() level = Level.g

这太奇怪了

首先,该查询在数据存储查看器中工作,即返回正确的行

SELECT * FROM Level where short_id = 'Ec71eN'
但是如果我运行这个

Level.all().filter("short_id = ", 'Ec71eN').get()
如果我运行以下命令,它将返回None

db.GqlQuery("SELECT * FROM Level where short_id = '%s'" % 'Ec71eN').get()
level = Level.get_by_id(189009)
它还返回None。如果我运行这个:

db.GqlQuery("SELECT * FROM Level where short_id = '%s'" % 'Ec71eN').get()
level = Level.get_by_id(189009)
它返回正确的行(189009是正确行的id)

莫名其妙?这里有什么问题?我以前从未见过这样的东西,它已经在生产中正常工作了至少几个星期。。。我想我现在至少有两个案例从今天开始就不起作用了


更新:这不可能是一个最终一致的问题,因为当我尝试上述操作时,该行已经运行了7个小时。我有两行相同的症状,奇怪的是booth是由相同的用户生成的。我通过上传特殊案例代码手动检查了他们的身份证后,他们“修复”了booth,如:

if short_id==CASE_1_SHORT_ID: 
     level = Level.get_by_id(CASE_1_ID)

之后,查询照常进行。

您是否正在使用HRD?没什么问题。你知道它最终应该是一致的,对吗

查询操作最终是一致的。 按id获取操作完全一致


您描述的是正确的数据存储行为。数据存储查看器操作返回正确的结果有点奇怪,但它可能在数据存储操作中碰到了一个单独的平板电脑。

您使用的是HRD吗?没什么问题。你知道它最终应该是一致的,对吗

查询操作最终是一致的。 按id获取操作完全一致


您描述的是正确的数据存储行为。数据存储查看器操作返回正确的结果有点奇怪,但它可能在数据存储操作中碰到了单独的平板电脑。

鉴于它是7小时前创建的,“最终一致性”通常需要几秒钟到几分钟。
如果最终的一致性是个问题,请多次运行相同的查询方法,看看是否返回相同的结果。如果它使用相同的方法连续返回相同的结果,那么很可能不是最终的一致性问题。您也应该切换到NDB API来查询数据—它比NDB API好1000倍,Guido也在使用它—所以您知道它很好。NDB是否表现出同样的不一致性

考虑到它是7小时前创建的,“最终一致性”通常需要几秒钟到几分钟。
如果最终的一致性是个问题,请多次运行相同的查询方法,看看是否返回相同的结果。如果它使用相同的方法连续返回相同的结果,那么很可能不是最终的一致性问题。您也应该切换到NDB API来查询数据—它比NDB API好1000倍,Guido也在使用它—所以您知道它很好。NDB是否表现出同样的不一致性

是的,HRD,但此行是在7小时前创建的。没有上限?如果有这样的案例,设计一个系统有点困难。是的,人力资源部,但这一行是7小时前创建的。没有上限?如果有这样的情况,设计一个系统是有点困难的。我不知道NDB API,我一定会研究它。(主要使用java和AppEngine,最近改用python。)我有两个案例至少5-7个小时。Booth在我手动执行get_by_id后“修复”(上传了新版本,带有针对失败的short_id的if语句)。所以这不是EC的事情,这是某种bug。我不知道NDB API,我一定会研究它。(主要使用java和AppEngine,最近改用python。)我有两个案例至少5-7个小时。Booth在我手动执行get_by_id后“修复”(上传了新版本,带有针对失败的short_id的if语句)。所以这不是电子商务,这是某种错误。