Я переношу клиентское приложение со старой виртуальной машины Tomcat, размещенной на Windows Server 2012 R2, на новую виртуальную машину CentOS 7 после того, как первая подверглась атаке вымогателей. Моя проблема возникает, когда я пытаюсь использовать функцию поиска, которая запрашивает локальную MySQL
данных MySQL
. Мои знания по SQL ограничены, поэтому я буду признателен за любую помощь, которую я могу получить от вас, мудрых и опытных программистов. Вот ошибка, с которой я сталкиваюсь:
Из searchresults.jsp
ссылочные строки:
<!-- Find Diacritic Terms -->
<c:set var="dsqlstatement">
SELECT *
FROM diacritic_map
WHERE alternate LIKE '%<%= t %>%'
</c:set>
<sql:query var="rs_diacritics" dataSource="jdbc/balanchine">
${dsqlstatement}
</sql:query>
Я проверил и проверил, что соединение с базой данных работает, так что это, вероятно, проблема с самим оператором SQL, верно? Ну, я проверил на рабочем сервере, и выражение было действительно таким же и функциональным, так что теперь у меня заканчиваются идеи. Я использую MySQL версии 8.0.15, Tomcat версии 9.0.16 и Java
версии 1.8.0_191, если эта информация полезна.
Заранее благодарю за любую помощь, которую вы можете предложить.
Изменить 1: Спасибо за рекомендацию @Selaron Вот полная трассировка стека
Редактировать 2: Спасибо, @vancleff. Вот пример приложения, которое я модифицировал для проверки соединения с базой данных. Я все еще сталкиваюсь с ошибкой, но теперь она другая, так как я поместил файл mysql-connector-java-5.0.x-bin.jar в папку lib webapp, как вы советовали. Это помогло с последней ошибкой, но теперь я все еще получаю нечто подобное. Также выяснилось, что во всех этих файлах все еще имеются окончания строк Windows, поэтому я запустил dos2unix в каталоге webapp. Спасибо за указание на это!
<%@ page import="java.sql.*" %>
<%@ page import="java.io.*" %>
<html>
<head>
<title>Sample Application JSP Page</title>
</head>
<body bgcolor=white>
<table border="0">
<tr>
<td align=center>
<img src="images/tomcat.gif">
</td>
<td>
<h1>Sample Application JSP Page</h1>
This is the output of a JSP page that is part of the Hello World application.
</td>
</tr>
</table>
<%= new String("Hello!") %>
<h1>Connection Status</h1>
<%
try{
String connectionURL = "jdbc:mysql://localhost:3306/DatabaseName-REDACTED";
Connection connection = null;
Class.forName("com.mysql.jdbc.Driver").newInstance();
connection = DriverManager.getConnection(connectionURL, "User-REDACTED", "Password-REDACTED");
if(!connection.isClosed())
out.println("Successfully connected to " + "MySQL server using TCP/IP...");
connection.close();
}catch(Exception e){
out.println("Unable to connect to database.\n"+e);
}%>
</body>
</html>
Новая ошибка:
Загрузите mysql-connector.jar отсюда и добавьте его в свой путь к классам. Еще одна вещь, которую нужно добавить
<sql:setDataSource var="datasrc" driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/dbname"
user="root"
password="pass"
/>
<sql:query var="rs_diacritics" dataSource="${datasrc}">
${dsqlstatement}
</sql:query>
Похоже, вы не добавили mysql jar в путь к классам и неправильно инициализировали источник данных. Кроме того, не забудьте загрузить текстовые журналы, а не фотографии/скриншоты. Они не читаются :)
Также вставьте jar в lib и добавьте в classpath:
WebContent
|
|__WEB-INF
|
|__lib
|
|__mysql-connector-java-5.0.x-bin.jar