CakePHPでbakeでFixtureを作成したとき、モデルにenumのデータタイプがあると
Notice Error: Schema generation error: invalid column type enum('xxx','yyy','zzz') for Model2.field does not exist in DBO in [C:\xxxxxx\lib\Cake\Model\CakeSchema.php, line 610]
のようにエラーが出て正常にFixtureが生成できなくなります。
対応としては、FixtureをBakeするときにレコードを作成させてしまいます。
Possible Models based on your current database:
1. Model1
2. Model2
3. Model3
4. Model4
5. Model5
Enter a number from the list above,
type in the name of another model, or 'q' to exit
[q] > 2
Would you like to import schema for this fixture? (y/n)
[n] >
Would you like to use record importing for this fixture? (y/n)
[n] >
Would you like to build this fixture with data from KeywordGroup's table? (y/n)
[n] > y
ここにエラーがたくさん表示される。
Please provide a SQL fragment to use as conditions
Example: WHERE 1=1
[WHERE 1=1] >
How many records do you want to import?
[10] >
できあがったFixtureにはenumのフィールドに関しての$fieldsが抜けているので、Stringとして追加してしまいます。
public $fields = array(
:
:
'field' => array('type' => 'string', 'null' => false, 'default' => null, 'length' => 50, 'collate' => 'utf8_general_ci', 'charset' => 'utf8'),
:
);
$recordsには、本番DBから適当にデータが追加されているはずです。この$recordsのデータがテストデータとしてinsertされます。
適当ですが、これでテストできました。