2

新しい grails プロジェクトに次の設定があります。

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

environments {
    development {
        dataSource {
            dbCreate = "create-drop" // one of 'create', 'create-drop', 'update', 'validate', ''
            url = "jdbc:mysql://localhost/myapp?useUnicode=yes&zeroDateTimeBehavior=convertToNull&characterEncoding=UTF-8"
            username = "root"
            password = ""
        }
    }
}

アプリを実行すると、次のエラーで失敗します。Error creating bean with name 'transactionManagerPostProcessor':

このエラーは、手動でデータベースに移動して、というデータベースを作成すると消えますmyapp

create-dropdbCreateの設定は、存在しない場合はデータベースを作成することを想定していると思いました。

質問

MySQL にデータベースが存在しない場合にデータベースが作成されるように設定するにはどうすればよいですか?

4

1 に答える 1

2

データベース自体の作成は、テーブルやシーケンスなどを作成する DDL よりもベンダー固有であるため、実際的ではありません。多くの場合、アクセス ルールやストレージ オプションなどを指定する必要があります。

Hibernate はスキーマ DDL を生成して実行しますが、H2 のような単純なデータベースを除いて、データベース自体を作成してプロセスを開始する必要があります。

于 2013-10-20T16:31:39.203 に答える