我正在尝试将 MySQL 数据库迁移到 Postgres。 从我在网上阅读的内容来看,
pgloader
似乎是最好的工具。
我用
pgloader
安装了apt-get
,但是在运行迁移时遇到了错误:
$ pgloader mysql://root:<password>@localhost/state_migrations postgresql:///state_migrations
ERROR mysql: Failed to connect to mysql at "localhost" (port 3306) as user "root": Condition QMYND:MYSQL-UNSUPPORTED-AUTHENTICATION was signalled.
我按照以下问题的建议通过更改 MySQL 的安全权限解决了这个问题:
这似乎有效,但后来我在运行迁移命令时遇到了这个错误:
pgloader ERROR mysql: 76 fell through ECASE expression.
我在 Github 上发现了这个issue,似乎有几个人在从源代码而不是
pgloader
安装 apt-get
后取得了成功。
这个 guide 帮助我弄清楚如何从源代码安装,但是
make pgloader
命令把我带到了我认为是 lisp 提示符的地方,我不明白我需要做什么...
make pgloader
mkdir -p build
curl -o build/quicklisp.lisp http://beta.quicklisp.org/quicklisp.lisp
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 57144 100 57144 0 0 389k 0 --:--:-- --:--:-- --:--:-- 387k
sbcl --noinform --no-sysinit --no-userinit --load build/quicklisp.lisp \
--load src/getenv.lisp \
--eval '(quicklisp-quickstart:install :path "build/quicklisp" :proxy (getenv "http_proxy"))' \
--eval '(quit)'
==== quicklisp quickstart 2015-01-28 loaded ====
To continue with installation, evaluate: (quicklisp-quickstart:install)
For installation options, evaluate: (quicklisp-quickstart:help)
WARNING: Making quicklisp part of the install pathname directory
debugger invoked on a SB-BSD-SOCKETS:OPERATION-TIMEOUT-ERROR in thread
#<THREAD "main thread" RUNNING {1004BD8173}>:
Socket error in "connect": ETIMEDOUT (Connection timed out)
Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.
restarts (invokable by number or by possibly-abbreviated name):
0: [CONTINUE] Ignore runtime option --eval "(quicklisp-quickstart:install :path \"build/quicklisp\" :proxy (getenv \"http_proxy\"))".
1: [ABORT ] Skip rest of --eval and --load options.
2: Skip to toplevel READ/EVAL/PRINT loop.
3: [EXIT ] Exit SBCL (calling #'EXIT, killing the process).
(SB-BSD-SOCKETS:SOCKET-ERROR "connect" 110)
error finding frame source: Bogus form-number: the source file has probably
changed too much to cope with.
source: NIL
0]
在说是
Making quicklisp part of the install pathname directory
后输出停止了一点,但最终超时了。
我试过输入(quicklisp-quickstart:install)
,但是总是超时
0] (quicklisp-quickstart:install)
debugger invoked on a SB-BSD-SOCKETS:OPERATION-TIMEOUT-ERROR in thread
#<THREAD "main thread" RUNNING {1004BD8173}>:
Socket error in "connect": ETIMEDOUT (Connection timed out)
Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.
restarts (invokable by number or by possibly-abbreviated name):
0: [ABORT ] Reduce debugger level (to debug level 1).
1: [CONTINUE] Ignore runtime option --eval "(quicklisp-quickstart:install :path \"build/quicklisp\" :proxy (getenv \"http_proxy\"))".
2: Skip rest of --eval and --load options.
3: Skip to toplevel READ/EVAL/PRINT loop.
4: [EXIT ] Exit SBCL (calling #'EXIT, killing the process).
(SB-BSD-SOCKETS:SOCKET-ERROR "connect" 110)
error finding frame source: Bogus form-number: the source file has probably
changed too much to cope with.
source: NIL
0[2]