Firebase数据库连接被服务器强制终止:不同区域#扑动

zzwlnbp8  于 2023-01-14  发布在  其他
关注(0)|答案(7)|浏览(174)

我正在用Flutter构建应用程序,并集成了Firebase。一开始,我的应用程序工作得完全正常,但一段时间后,Firebase遇到了这个问题,强行杀死了应用程序和服务器之间的连接。
具有持久连接(4812):pc_0 - Firebase数据库连接被服务器强制终止。不会尝试重新连接。原因:数据库位于其他区域。请将数据库URL更改为https://multiapp-f0e1e-default-rtdb.europe-west1.firebasedatabase.app

tuwxkamq

tuwxkamq1#

发生这种情况的原因是,当您创建项目时,实时数据库未启用,这就是google-services.json文件不包含实时数据库的url的原因。
我也面临着同样的问题,这是我所做的。
我们也可以下载一个更新的google-services.json文件。但是我手动添加了url。
从这里:

{
  "project_info": {
    "project_number": "xxx4071207xxx",
    "project_id": "xxxantonixxx",
    "storage_bucket": "xxxantonixxx.appspot.com"
  },

改为:

{
  "project_info": {
    "project_number": "xxx4071207xxx",
    "firebase_url": " https://multiapp-f0e1e-default-rtdb.europe-west1.firebasedatabase.app",
    "project_id": "xxxantonixxx",
    "storage_bucket": "xxxantonixxx.appspot.com"
  },

您将从此处获得数据库URL:

但是等等......它仍然可能不起作用。

如果你对google-services.json文件做了修改,并从开始重新编译应用程序,修改DONOT仍然会立即生效。
在我的例子中,即使我删除google-services.json文件并再次重新编译应用程序,它的工作原理与删除前相似。

溶液:##

因此,在这种情况下,我们必须删除项目文件夹中的build.dart_tool文件夹
或者在终端运行flutter clean
然后重新编译应用程序。
我是在浪费了整整两天的时间,朝另一个方向努力之后才知道这件事的。这就是为什么我必须分享它,这样它就不会发生在其他人身上。

4xrmg8kj

4xrmg8kj2#

第一次创建实时数据库时,DATABASE_URL将添加到配置文件中(GoogleService-Info.plist & google-services.json)文件。您可能会收到错误,因为(GoogleService-Info.plist & google-services.json)已过时且不包含数据库URL。您可以下载您的更新(GoogleService-Info.plist & google-services.json)文件,然后重试。

khbbv19g

khbbv19g3#

即使@Madhav的(接受的答案)解决方案不起作用,尝试创建一个新的项目,并按照接受的答案中提到的步骤。

ua4mk5z4

ua4mk5z44#

就像第一个评论说的那样,之后只需运行命令flutter clean并再次构建,一切都应该正常工作!

cl25kdpy

cl25kdpy5#

确保删除build和.dart_tool文件夹,然后它将工作

b5lpy0ml

b5lpy0ml6#

这也是错误消息,如果你是愚蠢的像我一样,并试图连接到谷歌Girebase数据库,而不是我实际上已经设置了谷歌Firestore

// Bad:
import 'package:firebase_database/firebase_database.dart';
DatabaseReference ref = FirebaseDatabase.instance.ref("users/123");

// Good
var db = FirebaseFirestore.instance;
import 'package:cloud_firestore/cloud_firestore.dart';

// (or vice versa)
k5hmc34c

k5hmc34c7#

FirebaseDatabase("your database URL").reference()

//或

FirebaseDatabase(databaseURL: "your database URL").reference()

代替

FirebaseDatabase.instance.reference()

只适用于flutter用户。这是因为你的数据库在美国服务器之外。

相关问题