2015-09-01 3 views
0

я пытаюсь соединиться с базы данных MySQL после запуска веб-приложение возникает ошибка, как: HTTP Status 500 - Внутренняя ошибка сервера тип отчета Исключение сообщение Internal Server Error описание сервер обнаружил внутреннюю ошибку, которая помешала ей выполнить этот запрос. исключение javax.servlet.ServletException: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Доступ запрещен для пользователя '' @ 'локальный' в базе данных 'mysqluser = корень'Не удается соединиться с базы данных MySQL в JSP

первопричины

com.mysql. jdbc.exceptions.MySQLSyntaxErrorException: доступ запрещен для пользователя '' @ 'localhost' в базу данных 'mysqluser = root'

примечание. Полные стековые следы исключения и его основные причины доступны в журналах GlassFish Server Open Source Edition 4.0 , GlassFish сервер Open Source Edition 4.0

Мой JSP код:

`<%@ page import ="java.sql.*" %> 

<%
Строка имя_файла = request.getParameter ("имя_файла");

`String lname = request.getParameter("lname"); 
`String email = request.getParameter("email"); 
`String user = request.getParameter("uname"); 
`String pwd = request.getParameter("pass"); 

Class.forName("com.mysql.jdbc.Driver"); Соединение CON = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql"+ "user=root"); Заявление ул = con.createStatement();

`int i = st.executeUpdate("insert into members(first_name, last_name,email, uname, pass) values ('" + fname + "','" + lname + "','" + email + "','" + user + "','" + pwd + "')"); 
`if (i > 0) 
`{ 
`out.print("Registration Successfull!"+"<ahref='index.jsp'>Go to Login</a>"); 
`} 
`else { 
    `response.sendRedirect("index.jsp"); 

} %> `

Моя база данных не имеет никакого пароля. Я установил свою связь в netbeans, выполнив следующие шаги: Шаг 1: вкладка «Сервис» Шаг 2: Щелкните правой кнопкой мыши на Базах данных и выберите «Новое соединение» ... Шаг 3: Следуйте инструкциям. Тестовое соединение успешно завершено. Я использую linux Fedora 20 OS

+1

Хорошим способом начать, было бы перемещение всей вашей бизнес-логики с вашего JSP (предназначенного только для представления пользовательского интерфейса) на сервлеты. Следующая часть, так как у вас есть полная трассировка стека (которую вы не показываете), глядя на это, возможно, поможет пролить свет на эту проблему. – Stultuske

+0

при получении соединения. Вам не нужно добавлять имя пользователя и пароль сервера mysql? –

+0

Connection con = DriverManager.getConnection ("jdbc: mysql: // localhost: 3306/mysql" + "user = root") это пробная линия; –

ответ

1

заявление Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql"+ "user=root"); неправильно, потому что:

Стечение url с "user=root" приведет к строке: jdbc:mysql://localhost:3306/mysqluser=root которая defenitely неправильно. В URL-адресе вам не хватает имени базы данных (если это mysql, тогда у вас есть проблема с его именованием, и я советую вам изменить имя db).

Решение:

Определение переменных для URL-адрес, имя пользователя и пароль отдельно (даже если пароль не установлен, вы должны предоставить его как пустую строку). См. Следующий код:

String url="jdbc:mysql://localhost:3306/databaseName"; 
String user="root"; 
String password=""; 

Connection conn = DriverManager.getConnection(url, user, password); 

Надеюсь, это поможет.

P.S. Плохая идея написать логику db в jsp.Лучше экрнализировать код для управления db в другом классе и использовать его для получения соответствующего соединения.

P.P.S. Не забывайте управлять своими ресурсами db после того, как вы сделали с ними (я говорю о блоке finally, где вы закрываете Connection, PreparedStatement, ResultSet), чтобы освободить использованные ресурсы и избежать утечек памяти. Это хорошая идея написать отдельный метод, который принимает эти аргументы и проверяет их на null, и если условие истинно, соответствующий ресурс будет закрыт.

+0

Спасибо, что так много .. они работают для меня. ;-) –

+0

@sanketkaranjule, если этот ответ разрешил вашу проблему, отметьте этот ответ как принятый. Благодарю. – drgPP

1

Вам не хватает аргумента пароля ... даже если вы регистрируетесь без пароля, но добавляете его с помощью строки empt ... И проверьте, добавлена ​​ли библиотека mysql в tomcat или glassfish если вы используете

+0

добро пожаловать в стек, я знаю, ур репо не разрешил оставлять комментарии. но при входе в mske обязательно добавьте фрагмент кода, чтобы лучше понять вопрос, так как кажется, что ассер тоже совершенно новый для стека –

+1

. Хорошо, я буду в следующий раз ... танков заранее –

Смежные вопросы