7

テーブルと列の名前がす​​でに定義されている既存の(MySql)データベースを操作する必要があります。

ドキュメントを正しく理解している場合(そして、このテーマに関する適切なドキュメントが見つからなかったため、リンクを高く評価します)、テーブル名はPersistIdentityに関連しているため、大文字で始める必要があります(これは私には当てはまりません)。 m向き)。

ただし、列名は自動的に大文字になりません(少なくとも、宣言から自動的に生成されるコードを説明するコードスニペットのYesodブック、永続的な章で暗示されているものです)。したがって、DBの列は小文字で始める必要があります。

上記の説明は本当に本当ですか?

テーブルからIDへのマッピング、および列からフィールドへのマッピングを具体的に制御できますか?そうでない場合、ネーミングに自動的に適用されるルールは何ですか?したがって、どのような名前が禁止されていますか?

また、フィールドの1つはVARCHAR(30)です。どうすればそれをPersistentに伝えることができますか?それは現在(yesod develを通じて)次のように不平を言っています:

errMessage="キーの長さのないキー指定で使用されるBLOB/TEXT列'my_field'"}

これは自動移行の結果です(とにかく無効にする必要があります)。ただし、制限付きVARCHARフィールドを宣言したい場合は、Persistentとその自動移行ツールを使用して宣言できますか?

ありがとう、

4

1 に答える 1

6

私はMySQLバックエンドの権限ではありませんが、IIRC(およびコードに基づく)では、maxlen=...属性を使用して最大長を制御できます。sql=...同様に、属性を使用して、データベースでフィールドに付けられる名前を直接制御できます。したがって、たとえば、次のように機能する可能性があります。

Person sql=people
    name Text sql=full_name maxlen=40
    age Int

また、既存のスキーマを扱っている場合は、自動移行コードを無効にする必要があることに同意します。

于 2012-05-03T13:04:57.127 に答える