DBのデータ型はInnoDBなのですが、トランザクションがきかないようです。
fuelphpなのですが使い方が間違っているのでしょうか?
php
1public function up() 2{ 3 try 4 { 5 DB::start_transaction(); 6 DBUtil::create_table('users_details', array( 7 'id' => array('type' => 'int', 'constraint' => 11, 'auto_increment' => true, 'unsigned' => true, 'comment' => 'ユーザーID'), 8 'user_id' => array('type' => 'int', 'constraint' => 11, 'default' => 0, 'comment' => 'ユーザーID'), 9 'company_id' => array('type' => 'int', 'constraint' => 11, 'default' => 0, 'comment' => '企業ID'), 10 'has_profile_picture' => array('type' => 'enum', 'constraint' => '"0","1"', 'default' => '0', 'comment' => 'プロフィール画像の有無'), 11 'first_name' => array('type' => 'varchar', 'constraint' => 25, 'comment' => '名前'), 12 'first_name_kana' => array('type' => 'varchar', 'constraint' => 25, 'comment' => '名前(カナ)'), 13 'last_name' => array('type' => 'varchar', 'constraint' => 25, 'comment' => '苗字'), 14 'last_name_kana' => array('type' => 'varchar', 'constraint' => 25, 'comment' => '苗字(カナ)'), 15 'nickname' => array('type' => 'varchar', 'constraint' => 25, 'comment' => 'ニックネーム'), 16 ), array('id')); 17 DBUtil::create_index('users_details', 'user_id'); 18 DBUtil::create_table('users_security_history', array( 19 'id' => array('type' => 'int', 'constraint' => 11, 'auto_increment' => true, 'unsigned' => true, 'comment' => 'ユーザーID'), 20 'user_id' => array('type' => 'int', 'constraint' => 11, 'default' => 0, 'comment' => 'ユーザーID'), 21 'change_type' => array('type' => 'enum', 'constraint' => '"1","2"', 'default' => '', 'comment' => '変更種別 1:パスワード/2:メールアドレス'), 22 'old_value' => array('type' => 'varchar', 'constraint' => 255, 'comment' => '変更前の値'), 23 'new_value' => array('type' => 'varchar', 'constraint' => 255, 'comment' => '変更後の値'), 24 ), array('id')); 25 DBUtil::create_index('users_security_history', 'user_id'); 26 DB::commit_transaction(); 27 } 28 catch (\Exception $e) 29 { 30 DB::rollback_transaction(); 31 throw $e; 32 } 33}
下記は必ずエラーになります。
'change_type' => array('type' => 'enum', 'constraint' => '"1","2"', 'default' => ''
こちら取り得る値が1,2ですがデフォルト値として''は受け付けないので
Syntax error or access violation: 1067 Invalid default value for 'change_type' with query: "CREATE TABLE IF NOT EXISTS `users_security_history`
というエラーができます。
users_security_historyテーブルは生成されていないのに、users_detailsテーブルは生成されるのはおかしいのでトランザクションを使ってみましたが、同じようにusers_detailsが生成されています。
こちらどうしたら良いか教えていただけないでしょうか。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。