我绝对是数据库管理的初学者,但是我正在竭尽全力解决这个问题,而又不需要太多。我有两个PostgreSQL数据库,正在尝试将数据从一个迁移到另一个。我使用java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionViewHolder{68b0359 position=4 id=-1, oldPos=-1, pLpos:-1 no parent} android.support.v7.widget.RecyclerView{387a36d VFED.VC.. ........ 0,0-1080,1428 #7f090009 app:id/DispatchAllrecyclerview}, adapter:com.example.guanlee.xenddriverdemo.Adapter.DeliveryListAdapter@7d9fba2, layout:android.support.v7.widget.LinearLayoutManager@3c7b033, context:com.example.guanlee.xenddriverdemo.Activity.ActDeliveryMenu@46f9476
at android.support.v7.widget.RecyclerView$Recycler.validateViewHolderForOffsetPosition(RecyclerView.java:5421)
at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5603)
at android.support.v7.widget.GapWorker.prefetchPositionWithDeadline(GapWorker.java:285)
at android.support.v7.widget.GapWorker.flushTaskWithDeadline(GapWorker.java:342)
at android.support.v7.widget.GapWorker.flushTasksWithDeadline(GapWorker.java:358)
at android.support.v7.widget.GapWorker.prefetch(GapWorker.java:365)
at android.support.v7.widget.GapWorker.run(GapWorker.java:396)
at android.os.Handler.handleCallback(Handler.java:761)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:156)
at android.app.ActivityThread.main(ActivityThread.java:6523)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:942)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:832)
I/Process: Sending signal. PID: 27993 SIG: 9
Application terminated.
将数据库转储到pg_dump
文件中:
.dump
然后,我尝试将数据加载到AWS RDS上的另一个PostgreSQL实例中:
pg_dump -Fc -U my_user -h my_host > mydb.dump
但是,我在新数据库中根本看不到任何数据。我确实看到了终端的输出:
pg_restore -U my_other_user -h my_new_host --clean --create --no-owner mydb.dump
我怀疑所有权存在一些问题?我的新旧数据库名称需要匹配吗?我检查了一下是否有一个新的数据库以我的旧数据库名称在我的新RDS实例中弹出,没有运气。
我尝试添加新数据库并在那里还原:
ALTER TABLE ONLY public.one_table
ADD CONSTRAINT one_table_fkey FOREIGN KEY (column) REFERENCES public.another_table(id);
--
-- Name: TABLE my_table; Type: ACL; Schema: public; Owner: -
--
GRANT SELECT ON TABLE public.my_table TO "read-only";
GRANT SELECT ON SEQUENCE public.my_table_seq TO "read-only";
--
-- Name: DEFAULT PRIVILEGES FOR SEQUENCES; Type: DEFAULT ACL; Schema: -; Owner: -
--
ALTER DEFAULT PRIVILEGES FOR ROLE my_user GRANT SELECT ON SEQUENCES TO "read-only";
--
-- Name: DEFAULT PRIVILEGES FOR TABLES; Type: DEFAULT ACL; Schema: -; Owner: -
--
ALTER DEFAULT PRIVILEGES FOR ROLE my_user GRANT SELECT ON TABLES TO "read-only";
--
-- PostgreSQL database dump complete
--
但是恢复后,我什至在Postico(我的GUI客户端)中都看不到这个新数据库。
我知道这不是太多的信息,但是请让我知道我还需要提供其他信息以帮助确定正在发生的事情。我绝对可以尝试逐表还原,但是我更喜欢使用pg_restore -U my_other_user -h my_new_host --clean --create --no-owner -d new_db mydb.dump
和pg_dump
,因为我听说它效率更高,工作量更少(一旦我可以使用它!)