Grails или Hibernate не создают отсутствующую таблицу

Я новичок в Grails, поэтому простите мое невежество — если другая информация окажется полезной, я сделаю все возможное, чтобы опубликовать ее.

Я создал один класс модели предметной области ToolKitComponent, который определяется как:

class ToolKitComponent {
    String componentName
    String componentVersion
    int componentDownloads
    Date compnentLastUpdate

    static constraints = {

    }
}

У меня есть контроллер, который я просто хочу протестировать ORM, сохранив пример, поэтому вот содержимое контроллера:

def index() { 
        ToolKitComponent i = new ToolKitComponent()
        i.setComponentName("TestComponent")
        i.setComponentVersion("v1.10")
        i.setComponentDownloads(1)
        i.setCompnentLastUpdate(new Date())
        i.save()
}

Я установил плагин базы данных MySql и обновил свой DataSource.groovy до:

dataSource {
    pooled = true
    driverClassName = "com.mysql.jdbc.Driver"
    dialect = "org.hibernate.dialect.MySQL5InnoDBDialect"
    loggingSql = true
}

// other settings

environments {
    development {
        dataSource {
            String dbCreate = "create"
            String url = "jdbc:mysql://localhost/testDataBase"
            String username = "myUser"
            String password = "myPass"
        }
    }
}

Я создал базу данных testDataBase и предоставил все имя пользователя.

Когда я запускаю приложение, я получаю:

Hibernate: insert into tool_kit_component (version, compnent_last_update, component_downloads, component_name, component_version) values (?, ?, ?, ?, ?)
| Error 2012-07-11 20:01:52,727 [http-bio-8080-exec-2] ERROR util.JDBCExceptionReporter  - Table "TOOL_KIT_COMPONENT" not found; SQL statement:
insert into tool_kit_component (version, compnent_last_update, component_downloads, component_name, component_version) values (?, ?, ?, ?, ?) [42102-164]
| Error 2012-07-11 20:01:52,752 [http-bio-8080-exec-2] ERROR errors.GrailsExceptionResolver  - JdbcSQLException occurred when processing request: [GET] /TestProject/
Table "TOOL_KIT_COMPONENT" not found; SQL statement:
insert into tool_kit_component (version, compnent_last_update, component_downloads, component_name, component_version) values (?, ?, ?, ?, ?) [42102-164]. Stacktrace follows:
Message: Table "TOOL_KIT_COMPONENT" not found; SQL statement:
insert into tool_kit_component (version, compnent_last_update, component_downloads, component_name, component_version) values (?, ?, ?, ?, ?) [42102-164]
    Line | Method
->>  329 | getJdbcSQLException in org.h2.message.DbException
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|    169 | get                 in     ''
|    146 | get . . . . . . . . in     ''
|   4753 | readTableOrView     in org.h2.command.Parser
|   4731 | readTableOrView . . in     ''
|    954 | parseInsert         in     ''
|    375 | parsePrepared . . . in     ''
|    279 | parse               in     ''
|    251 | parse . . . . . . . in     ''
|    217 | prepareCommand      in     ''
|    415 | prepareLocal . . .  in org.h2.engine.Session
|    364 | prepareCommand      in     ''
|   1121 | prepareCommand . .  in org.h2.jdbc.JdbcConnection
|     71 | <init>              in org.h2.jdbc.JdbcPreparedStatement
|    267 | prepareStatement .  in org.h2.jdbc.JdbcConnection
|   1051 | prepareStatement    in     ''
|    508 | prepareStatement .  in org.apache.commons.dbcp.DelegatingConnection
|    400 | prepareStatement    in org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper
|     11 | index . . . . . . . in TestProject.HomeController
|   1110 | runWorker           in java.util.concurrent.ThreadPoolExecutor
|    603 | run . . . . . . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^    722 | run                 in java.lang.Thread

Я использую Grails 2.0.4.

Любая помощь приветствуется!


person OnResolve    schedule 12.07.2012    source источник


Ответы (1)


Уберите String из определения источника данных.

environments {
    development {
        dataSource {
            dbCreate = "create"
            url = "jdbc:mysql://localhost/testDataBase"
            username = "myUser"
            password = "myPass"

        }
    }
}
person Kelly    schedule 12.07.2012