Не удалось создать подключение к базе данных (ColdFusion)

Я создаю простое приложение CRUD через ColdFusion. Я захожу в панель администратора ColdFusion по адресу http://localhost:8600/CFIDE/administrator/index.cfm и добавляю «Новый источник данных». Но я получаю следующую ошибку:

Connection verification failed for data source: dsnMyVariable
java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. 
The root cause was that: java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.

«Ошибка


person Roman Kharitonov    schedule 30.04.2018    source источник
comment
Возможный дубликат Подключение Coldfusion 9 с MySql 5 в Ubuntu 9.10   -  person Terrabits    schedule 30.04.2018
comment
Какие настройки вы использовали для DSN (база данных, сервер, порт, имя пользователя, ...). База данных находится на том же сервере, что и CF?   -  person SOS    schedule 30.04.2018
comment
Я использую стандартные настройки (сервер MySQL, локальный хост, 3306, root). Те же IP-адреса, но разные порты. CF на localhost:8600 и БД на localhost:3306.   -  person Roman Kharitonov    schedule 01.05.2018
comment
Вы настроили пользователя для подключения к MySQL? Права ли разрешения? И настроен ли ваш CF DSN для поиска MySQL на порту 3306? Использование правильной строки JDBC?   -  person Shawn    schedule 01.05.2018
comment
Нет, я не настраивал пользователя, я использую уже существующий «root», я полагаю, что «root» имеет права для моей проблемы. Моя настройка CF DSN для поиска MySQL на порту 3306. Где я могу найти строку jdbc?   -  person Roman Kharitonov    schedule 01.05.2018
comment
Можете ли вы подключиться к своей базе данных с помощью MySql Workbench с тем же именем пользователя, паролем и портом?   -  person Twillen    schedule 01.05.2018
comment
Это нормально для тестирования, но обычно вы создаете отдельного пользователя вместо использования root. Во всяком случае, 1) вы можете войти в mysql из командной строки? mysql -u root -p? 2) Порт 3306 открыт? Вы можете проверить, используя что-то вроде telnet 127.0.0.1 3306.   -  person SOS    schedule 01.05.2018
comment
Да, Твиллен, я могу подключиться к своей базе данных с помощью MySql Workbench и того набора параметров, который я пытаюсь использовать в CF Administrator. ‹br/› Ageax, Да, я могу войти в mysql из командной строки. Я написал mysql -u root -p -h 127.0.0.1, затем ввел пароль и успешно подключился. Когда я написал telnet 127.0.0.1 3306 я увидел: J 8.0.11&Giw2><r h[;E{"n*'caching_sha2_password и через 10 секунд Connection to host lost. Что это значит? Порт открыт или нет?   -  person Roman Kharitonov    schedule 01.05.2018
comment
@RomanKharitonov - Открыто. В противном случае вы получили бы сообщение о сбое подключения, например Could not open connection to the host, on port 3306.... Хм... когда вы говорите Я использую стандартные настройки (сервер MySQL, локальный хост....), я не уверен, что введенные значения верны. Одной из причин ошибки NonTransient... является неправильное имя сервера, например установка SomeInvalidName вместо localhost. Он должен быть установлен на: Database: YourDatabaseName | Server: 127.0.0.1 | Port: 3306 | UserName: root | Password: (YourPassword).   -  person SOS    schedule 01.05.2018


Ответы (2)


Обновление:

После установки MySQL 8 я получил точно такое же сообщение об ошибке при создании DSN. Похоже, это проблема совместимости с MySQL 8. Проверка матрицы поддержки системы для ColdFusion 2016 показывает только MySQL 5.7, поэтому MySQL 8, вероятно, не поддерживается или не совместим со встроенными драйверами.

Установка более нового драйвера JDBC, похоже, решила проблему и позволила проверить DSN.

  1. Остановить службу Windows ColdFusion 2016
  2. Загрузите последнюю версию драйвера JDBC с https://dev.mysql.com/downloads/connector/j/. . На данный момент последней версией является v8.0.11.
  3. Разархивируйте и скопируйте новый jar-файл драйвера (mysql-connector-java-8.0.11.jar) в каталог {cf2016_root}\wwwroot\WEB-INF\lib.
  4. Найдите старый файл jar драйвера MySQL и переименуйте его, чтобы он не имел расширения .jar. Например, переименуйте mysql-connector-java-5.1.39-bin.jar в mysql-connector-java-5.1.39-bin.jar.old. (Фактическое местоположение и номер версии могут отличаться, но обычно они находятся в {cf2016_root}\lib\)

  5. Перезапустите службу Windows ColdFusion 2016.

Наконец, создайте новый DSN, используя Тип драйвера = Другой, и введите следующее. Просто замените «YourDatasourceName» и «YourDatabaseName» правильными значениями.

  • Имя источника данных CF: YourDatasourceName
  • URL-адрес JDBC: jdbc:mysql://127.0.0.1:3306/YourDatabaseName?tinyInt1isBit=false&
  • Класс водителя: com.mysql.jdbc.Driver
  • Имя водителя: com.mysql.jdbc.Driver
  • Имя пользователя: root
  • Пароль : (your password)

Не видя ваших реальных настроек DSN, это всего лишь предположение, но... убедитесь, что настройка Server верна. Поскольку MySQL работает на той же машине, что и CF, введите либо localhost, либо 127.0.0.1

Имя сервера Localhost

Я подтвердил, что ввод недопустимого имени сервера, такого как NotARealServerName (нет компьютера с таким именем в сети), приводит к той же ошибке, которую вы видите, когда пытаетесь проверить DSN в CF11.

«Недопустимое

Проверить исключение DSN SQLNonTransientConnectionException

Как только вы заработаете, я настоятельно рекомендую создать отдельного пользователя аккаунт, предоставив соответствующие разрешения и используя его с CF DSN (вместо «root»).

person SOS    schedule 01.05.2018

Проблема была с версией mysql Connector java.
В первый раз я использовал последнюю версию Connector/J 8.0.11, и мне нужно использовать предыдущую версию Connector/J 5.1.46. Мне очень помог совет от Ageax!
Работайте как с MySQL 5, так и с Other драйверами.

введите здесь описание изображения

person Roman Kharitonov    schedule 03.05.2018
comment
Рад, что у вас наконец-то все заработало =) Странно, что версия 8.0.11 не работает у вас с MySQL 8. Я не пробовал 5.1.46, только 5.1.39, которая не работала с MySQL8. Правильный водитель решает все! Просто имейте в виду, что ярлык MySQL5 вводит в заблуждение. Это просто жестко закодированная метка, поэтому CF будет использовать любую версию драйвера, которую он найдет в пути к классу CF 5.x, 8.x, что угодно ;-) - person SOS; 03.05.2018
comment
Да, ты прав. Для всех, кто читает, я могу подтвердить, что он работает и с 5.1.46. (В моей установке он также работает с 8.0.11, но используйте тот, который вам подходит). - person SOS; 05.05.2018