2016-01-27 2 views
0

Мой код нижене удается подключить nodejs к MySQL

var JDBC = require('jdbc'); 
var jinst = require('jdbc/lib/jinst'); 
var Pool = require('jdbc/lib/pool'); 


// isJvmCreated will be true after the first java call. When this happens, the 
// options and classpath cannot be adjusted. 
if (!jinst.isJvmCreated()) { 
    // Add all java options required by your project here. You get one chance to 
    // setup the options before the first java call. 
    jinst.addOption("-Xrs"); 
    // Add all jar files required by your project here. You get one chance to 
    // setup the classpath before the first java call. 
    jinst.setupClasspath(['./jars/mysql-connector-java-5.1.38-bin.jar']); 
} 
var mySql = new JDBC({ 
    url: 'jdbc:mysql://localhost:3306/nodejs', 
    drivername: 'com.mysql.jdbc.Driver', 
    minpoolsize: 5, 
    maxpoolsize: 10, 
    user: 'root', 
    password: 'root' 
}); 
mySql.initialize(function(err) { 
    if (err) { 
     console.log(err); 
    } 
}); 

Я имею банку в папке и MySQL работает в моем местном. Но я получаю следующую ошибку:

java.lang.NoClassDefFoundError: com/mysql/jdbc/Driver 
Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 
    at java.net.URLClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
] cause: nodeJava_java_lang_NoClassDefFoundError {} } 
{ [Error: Error running static method 
java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/nodejs 
    at java.sql.DriverManager.getConnection(Unknown Source) 
    at java.sql.DriverManager.getConnection(Unknown Source) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
] cause: nodeJava_java_sql_SQLException {} } 

Пожалуйста, помогите. Есть ли какие-либо команды инициализации в nodejs?

+1

Это не чисто nodejs, вы должны сказать больше о вашей установке, почему у вас есть ошибка Java, например? Ошибка является довольно явной и типичной ошибкой java, у вас нет установленного драйвера mysql java, [есть много вопросов об этой ошибке] (https://stackoverflow.com/search?tab=votes&q=% 5bjava% 5d% 20No% 20suitable% 20driver% 20found% 20for% 20jdbc% 3amysql). – Shanoor

ответ

1

Я пробовал ваш код точно, и он работает, я думаю, что ваш путь setupClasspath() не очень хорош. Попробуйте использовать абсолютный путь, относительный путь работает только тогда, когда рабочий каталог устанавливается, как вы ожидаете:

if (!jinst.isJvmCreated()) { 
    jinst.addOption("-Xrs"); 
    jinst.setupClasspath([__dirname + '/jars/mysql-connector-java-5.1.38-bin.jar']); 
} 
Смежные вопросы