2014-10-18 1 views
1

내 최근 Minecraft Python/Jython Bukkit 플러그인의 데이터 저장소를 플랫 파일에서 MySQL 데이터베이스로 변환하려고했기 때문에 인터넷 검색을 시작했습니다. 파이썬에 대한 sqlite3과 MySQLd를 시도했지만 성공하지 못했습니다. 그래서 StackOverflow를 검색 한 후 몇 시간이 지난 후이 질문과 대답을 찾았습니다. 문제는 동일한 문제이므로 해결해야합니다. 나는 this answer에 주어진 단계를 수행했지만, 어떤 성공없이이 오류로 인해 :jython이 작동하지 않는 zxJDBC 사용

: 또한

from com.ziclix.python.sql import zxJDBC 

params = {} 
params['serverName'] = 'host' 
params['databaseName'] = 'dbname' 
params['user'] = "username" 
params['password'] = "pw" 
params['port'] = 3306 
db = apply(zxJDBC.connectx, ("org.gjt.mm.mysql.MysqlDataSource",), params) 

, 나는이 코드를 시도 : 내가 사용

[15:31:45 WARN]: org.bukkit.plugin.InvalidPluginException: Traceback (most recen 
t call last): 
File "<iostream>", line 10, in <module> 
zxJDBC.DatabaseError: unable to instantiate datasource 

[15:31:45 WARN]:  at net.lahwran.bukkit.jython.PythonPluginLoader.loadPlug 
in(PythonPluginLoader.java:296) 
[15:31:45 WARN]:  at net.lahwran.bukkit.jython.PythonPluginLoader.loadPlug 
in(PythonPluginLoader.java:113) 
[15:31:45 WARN]:  at net.lahwran.bukkit.jython.PythonPluginLoader.loadPlug 
in(PythonPluginLoader.java:83) 
[15:31:45 WARN]:  at org.bukkit.plugin.SimplePluginManager.loadPlugin(Simp 
lePluginManager.java:305) 
[15:31:45 WARN]:  at com.master.bukkit.python.PythonLoader.onLoad(PythonLo 
ader.java:113) 
[15:31:45 WARN]:  at org.bukkit.craftbukkit.v1_7_R1.CraftServer.loadPlugin 
s(CraftServer.java:260) 
[15:31:45 WARN]:  at org.bukkit.craftbukkit.v1_7_R1.CraftServer.reload(Cra 
ftServer.java:628) 
[15:31:45 WARN]:  at org.bukkit.Bukkit.reload(Bukkit.java:279) 
[15:31:45 WARN]:  at org.bukkit.command.defaults.ReloadCommand.execute(Rel 
oadCommand.java:23) 
[15:31:45 WARN]:  at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCo 
mmandMap.java:192) 
[15:31:45 WARN]:  at org.bukkit.craftbukkit.v1_7_R1.CraftServer.dispatchCo 
mmand(CraftServer.java:542) 
[15:31:45 WARN]:  at org.bukkit.craftbukkit.v1_7_R1.CraftServer.dispatchSe 
rverCommand(CraftServer.java:529) 
[15:31:45 WARN]:  at net.minecraft.server.v1_7_R1.DedicatedServer.aw(Dedic 
atedServer.java:286) 
[15:31:45 WARN]:  at net.minecraft.server.v1_7_R1.DedicatedServer.u(Dedica 
tedServer.java:251) 
[15:31:45 WARN]:  at net.minecraft.server.v1_7_R1.MinecraftServer.t(Minecr 
aftServer.java:541) 
[15:31:45 WARN]:  at net.minecraft.server.v1_7_R1.MinecraftServer.run(Mine 
craftServer.java:453) 
[15:31:45 WARN]:  at net.minecraft.server.v1_7_R1.ThreadServerApplication. 
run(SourceFile:617) 

코드 오류가 위의 원인이

from com.ziclix.python.sql import zxJDBC 

d, u, p, v = "jdbc:mysql://host", "root", "pw", "org.gjt.mm.mysql.Driver" 
db = zxJDBC.connect(d, u, p, v) 

하지만이 오류 발생 :

[15:37:20 WARN]: Caused by: Traceback (most recent call last): 
File "<iostream>", line 13, in <module> 
zxJDBC.DatabaseError: driver [org.gjt.mm.mysql.Driver] not found 

[15:37:20 WARN]:  at org.python.core.PyException.doRaise(PyException.java: 
200) 
[15:37:20 WARN]:  at org.python.core.Py.makeException(Py.java:1239) 
[15:37:20 WARN]:  at org.python.core.Py.makeException(Py.java:1243) 
[15:37:20 WARN]:  at com.ziclix.python.sql.zxJDBC.makeException(zxJDBC.jav 
a:328) 
[15:37:20 WARN]:  at com.ziclix.python.sql.connect.Connect.__call__(Connec 
t.java:78) 
[15:37:20 WARN]:  at org.python.core.PyObject.__call__(PyObject.java:441) 
[15:37:20 WARN]:  at org.python.core.PyObject.__call__(PyObject.java:447) 
[15:37:20 WARN]:  at org.python.pycode._pyx5.f$0(<iostream>:15) 
[15:37:20 WARN]:  at org.python.pycode._pyx5.call_function(<iostream>) 
[15:37:20 WARN]:  at org.python.core.PyTableCode.call(PyTableCode.java:165 
) 
[15:37:20 WARN]:  at org.python.core.PyCode.call(PyCode.java:18) 
[15:37:20 WARN]:  at org.python.core.Py.runCode(Py.java:1275) 
[15:37:20 WARN]:  at org.python.util.PythonInterpreter.execfile(PythonInte 
rpreter.java:235) 
[15:37:20 WARN]:  at org.python.util.PythonInterpreter.execfile(PythonInte 
rpreter.java:230) 
[15:37:20 WARN]:  at net.lahwran.bukkit.jython.PythonPluginLoader.loadPlug 
in(PythonPluginLoader.java:244) 
[15:37:20 WARN]:  ... 16 more 

나는 acutally 무엇을 했습니까 (단계별)?

this link에서 압축 된 mysql connector/J를 다운로드하고 압축을 푼다. 압축을 풀고 "mysql-connector-java-3.1.14-bin.jar"를 복사하여 붙여 넣었다. 이 경로는 "C : \ Users \ my_name \ Documents \ 1.7.2twistedjobs \ plugins \ MySQL_jython"입니다. 그런 다음 제어판을 열고 시스템을 클릭하고 고급 시스템 설정으로 이동 한 다음 환경 변수 버튼을 클릭하고 이름이 CLASSPATH 인 새 클래스를 추가 한 다음이 경로를 값 "C : \ Users \ my_name \ Documents \ 1.7.2twistedjobs \ plugins \ MySQL_jython \ mysql-connector-java-3.1.14-bin.jar "을 클릭하십시오.

참고 : 더 가져 오기 때문에 분명히 성공적으로 가져 왔지만 드라이버를 찾을 수 없기 때문에, 이상하다하는 zxJDBC의 오류 ... 사전에

감사가 없었다!

답변

0

두 번째 코드 스 니펫이 작동해야합니다. 그것은 내 컴퓨터에서 작동합니다. 당신이 가진 것으로 보이는 것은 CLASSPATH 문제입니다. 당신은 Windows에서 당신이 여기에서 찾아 낼 확장 디렉토리에 MySQL의 드라이버 jar 파일을 넣어 시도 할 수 있습니다 :

%SystemRoot%\Sun\Java\lib\ext 

드라이버는 다음 Java 응용 프로그램을 모두 사용할 수 것입니다 (만약 당신이 원하는 경우). 자세한 사항은 오라클의 문서에 있습니다

http://docs.oracle.com/javase/tutorial/ext/basics/install.html

내가 다른 점 몇 가지를 만들고 싶어. 첫째로, 드라이버가 당신이 지정한 이름으로 작업 할지라도 결국은 이름이 바뀐 현대적인 버전 인 org.gjt.mm.mysql.Driver에서 com.mysql.jdbc.Driver으로 바꿀 수 있습니다. 이유에 대한 자세한 내용은 https://stackoverflow.com/a/5808184/155167입니다.

org.gjt.mm.mysql 패키지에 MysqlDataSource 클래스가 없으므로 첫 번째 코드 스 니펫이 작동하지 않습니다. 참조하는 클래스는 실제로 여기에 있습니다 : com.mysql.jdbc.jdbc2.optional.MysqlDataSource, 그러나 스 니펫이 작동하는지 모르겠습니다.

내가 말했듯이 MySQL 드라이버 jar를 CLASSPATH에 올바르게 넣으면 제대로 작동합니다.CLASSPATH 설정에 오라클 문서는 여기에 있습니다 :

http://docs.oracle.com/javase/tutorial/essential/environment/paths.html http://docs.oracle.com/javase/8/docs/technotes/tools/windows/classpath.html

행운을 빕니다!

관련 문제