1
我只能通过SSH隧道连接到我的数据库。直到现在,我一直在从我的数据库转储架构并将其加载到本地。我怎样才能直接连接到我的数据库?如何使用Propel在SSH隧道上进行反向工程?
我只能通过SSH隧道连接到我的数据库。直到现在,我一直在从我的数据库转储架构并将其加载到本地。我怎样才能直接连接到我的数据库?如何使用Propel在SSH隧道上进行反向工程?
这些信息在互联网上完全没有,所以我正在回答我自己的问题。
打开一个终端,运行以下命令:
ssh -L 3307:[database hostname]:3306 [SSH username]@[SSH hostname] [-p[SSH port]]
这也可能与腻子工作,我不知道。
在你的build.properties,设置如下:
propel.database.url=mysql:host=0.0.0.0;port=3307;dbname=[database name]
它不能是localhost。如果是,您将收到以下错误:
propel > reverse:
[echo] +-----------------------------------------------+
[echo] | |
[echo] | Generating XML from PDO connection ! |
[echo] | |
[echo] +-----------------------------------------------+
[propel-schema-reverse] There was an error building XML from metadata: vendor/propel/propel1/generator/build-propel.xml:296:1: SQLSTATE[HY000] [2002] No such file or directory
BUILD FINISHED
Total time: 0.2293 seconds
这神秘的错误意味着它无法找到您的计算机上的Unix套接字,因为even if you are specifying the host and the port,PDO仍然会寻找一个与localhost
。显然,你永远不能为不在你的机器上的服务器打开一个套接字,并且即使你将unix_socket
添加到DSN为空,它也会抱怨是不好的文件名。使用0.0.0.0
修复此错误。我其实从this question算出来。
你完成了!您现在可以通过SSH隧道进行逆向工程。