elakovnick24 / SQL_Homework

1 stars 0 forks source link

Инициализация базы данных #1

Open elakovnick24 opened 4 years ago

elakovnick24 commented 4 years ago

Не могу проинициализировать базу данных

Шаг 1

Шаг 2

Делаю третий пункт из условия задачи

Запустить SUT (app-deadline.jar): для указания параметров подключения к БД можно использовать:

java -jar app-deadline.jar -P:jdbc.url=http://localhost:9999 -P:jdbc.user=app -P:jdbc.password=pass

image

2020-09-11 00:36:39.870 [main] TRACE Application - {
    # application.conf @ jar:file:/Users/nikitaelakov/Downloads/SQL_Homework/app-deadline.jar!/application.conf: 6
    "application" : {
        # application.conf @ jar:file:/Users/nikitaelakov/Downloads/SQL_Homework/app-deadline.jar!/application.conf: 7
        "modules" : [
            # application.conf @ jar:file:/Users/nikitaelakov/Downloads/SQL_Homework/app-deadline.jar!/application.conf: 7
            "ru.netology.aqa.ApplicationKt.module"
        ]
    },
    # application.conf @ jar:file:/Users/nikitaelakov/Downloads/SQL_Homework/app-deadline.jar!/application.conf: 2
    "deployment" : {
        # application.conf @ jar:file:/Users/nikitaelakov/Downloads/SQL_Homework/app-deadline.jar!/application.conf: 3
        "port" : 9999
    },
    # Content hidden
    "security" : "***"
}

2020-09-11 00:36:39.985 [DefaultDispatcher-worker-1] INFO  Application - No ktor.deployment.watch patterns specified, automatic reload is not active
Exception in thread "DefaultDispatcher-worker-1" java.lang.reflect.InvocationTargetException
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:567)
        at kotlin.reflect.jvm.internal.calls.CallerImpl$Method.callMethod(CallerImpl.kt:97)
        at kotlin.reflect.jvm.internal.calls.CallerImpl$Method$Static.call(CallerImpl.kt:106)
        at kotlin.reflect.jvm.internal.KCallableImpl.call(KCallableImpl.kt:106)
        at kotlin.reflect.jvm.internal.KCallableImpl.callDefaultMethod$kotlin_reflection(KCallableImpl.kt:152)
        at kotlin.reflect.jvm.internal.KCallableImpl.callBy(KCallableImpl.kt:110)
        at io.ktor.server.engine.ApplicationEngineEnvironmentReloading.callFunctionWithInjection(ApplicationEngineEnvironmentReloading.kt:392)
        at io.ktor.server.engine.ApplicationEngineEnvironmentReloading.executeModuleFunction(ApplicationEngineEnvironmentReloading.kt:340)
        at io.ktor.server.engine.ApplicationEngineEnvironmentReloading.access$executeModuleFunction(ApplicationEngineEnvironmentReloading.kt:33)
        at io.ktor.server.engine.ApplicationEngineEnvironmentReloading$instantiateAndConfigureApplication$1$$special$$inlined$forEach$lambda$1.invoke(ApplicationEngineEnvironmentReloading.kt:287)
        at io.ktor.server.engine.ApplicationEngineEnvironmentReloading$instantiateAndConfigureApplication$1$$special$$inlined$forEach$lambda$1.invoke(ApplicationEngineEnvironmentReloading.kt:33)
        at io.ktor.server.engine.ApplicationEngineEnvironmentReloading.avoidingDoubleStartupFor(ApplicationEngineEnvironmentReloading.kt:320)
        at io.ktor.server.engine.ApplicationEngineEnvironmentReloading.access$avoidingDoubleStartupFor(ApplicationEngineEnvironmentReloading.kt:33)
        at io.ktor.server.engine.ApplicationEngineEnvironmentReloading$instantiateAndConfigureApplication$1.invoke(ApplicationEngineEnvironmentReloading.kt:286)
        at io.ktor.server.engine.ApplicationEngineEnvironmentReloading$instantiateAndConfigureApplication$1.invoke(ApplicationEngineEnvironmentReloading.kt:33)
        at io.ktor.server.engine.ApplicationEngineEnvironmentReloading.avoidingDoubleStartup(ApplicationEngineEnvironmentReloading.kt:302)
        at io.ktor.server.engine.ApplicationEngineEnvironmentReloading.instantiateAndConfigureApplication(ApplicationEngineEnvironmentReloading.kt:284)
        at io.ktor.server.engine.ApplicationEngineEnvironmentReloading.createApplication(ApplicationEngineEnvironmentReloading.kt:137)
        at io.ktor.server.engine.ApplicationEngineEnvironmentReloading.start(ApplicationEngineEnvironmentReloading.kt:257)
        at io.ktor.server.cio.CIOApplicationEngine$serverJob$1$1.invokeSuspend(CIOApplicationEngine.kt:52)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(Dispatched.kt:241)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:594)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.access$runSafely(CoroutineScheduler.kt:60)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:740)
Caused by: java.sql.SQLException: Cannot create JDBC driver of class 'com.mysql.cj.jdbc.Driver' for connect URL 'http://localhost:9999'
        at org.apache.commons.dbcp2.DriverFactory.createDriver(DriverFactory.java:75)
        at org.apache.commons.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:472)
        at org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:538)
        at org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:753)
        at org.apache.commons.dbutils.AbstractQueryRunner.prepareConnection(AbstractQueryRunner.java:319)
        at org.apache.commons.dbutils.QueryRunner.update(QueryRunner.java:495)
        at ru.netology.aqa.service.UserService$register$2.invokeSuspend(UserService.kt:31)
        ... 5 more
Caused by: java.sql.SQLException: No suitable driver
        at org.apache.commons.dbcp2.DriverFactory.createDriver(DriverFactory.java:68)
        ... 11 more

Скорее всего прописал не правильный флаги параметров запуска сервиса

Проблемы / Вопросы

Инициализация

Читаю подсказку

Поэтому вам нужно сходить на сайт-описание Docker Image MySQL и посмотреть, как при инициализации скармливать схему.

Из того, что я понял (по-моему пока ,что ничего =) )

Нужно добавить в volumes что-то типа вот такого пути

- ./database/schema.sql:/docker-entrypoint-initdb.d/schema.sql:ro

Верно или нет? Я не пробовал так как ничего не понял

Про вычистку данных наверное позже спрошу, как доберусь до этого шага)

@ArRomanov

ArRomanov commented 4 years ago
  1. Про volume верно, но написали некорректно. Через volume у нас объединяются директории, а не отдельные файлы. Правильнее будет так - ./database:/docker-entrypoint-initdb.d:ro
  2. По команде запуска приложения тоже ошибка. В параметре -P:jdbc.url должен быть адрес к БД, как у вас было прописано в прошлом задании в application.properties