SET FORIENG KEY CHECKS不工作Laravel Migration

时间:2015-12-17 09:07:19

标签: php mysql laravel

即使在声明SET FOREIGN KEYS CHECKS后,我也无法将我的id列的类型更改为整数。我收到错误

  

[照亮\数据库\ QueryException]
  SQLSTATE [HY000]:常规错误:1025重命名时出错   ' ./ ABC /#SQL-45d_6d'到' ./ abc / oauth_clients' (错误:   150)(SQL:ALTER TABLE o auth_clients CHANGE id id int(10)   AUTO_INCREMENT)

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class AddAppIdToOauthClients extends Migration {

        /**
         * Run the migrations.
         *
         * @return void
         */
        public function up()
        {
                /**
                Schema::table('oauth_clients', function(Blueprint $table)
                {
                    $table->string('app_id',100);
                });
                */


                DB::statement('SET FOREIGN_KEY_CHECKS = 0;');
                DB::statement('ALTER TABLE oauth_clients CHANGE id id int(10) AUTO_INCREMENT');

                DB::statement('SET FOREIGN_KEY_CHECKS = 1;');
        }

        /**
         * Reverse the migrations.
         *
         * @return void
         */
        public function down()
        {
                /**
                Schema::table('oauth_clients', function(Blueprint $table)
                {
                    $table->dropColumn('app_id');
                });
                */

                DB::statement('SET FOREIGN_KEY_CHECKS = 0;');
                DB::statement('ALTER TABLE oauth_clients CHANGE id id varchat(55);');
                DB::statement('SET FOREIGN_KEY_CHECKS = 1;');

        }
                                                                                                                                        1,1           Top

更新: 这是我的INNODB状态

上显示的错误
  

------------------------最新外国关键错误   ------------------------ 151217 17:37:37表abc / oauth_client_endpoints的外键约束出错:没有索引   引用表,其中包含列作为第一列,   或者引用表中的数据类型与中的数据类型不匹配   表。约束:,CONSTRAINT   " oauth_client_endpoints_client_id_foreign" FOREIGN KEY(" client_id")   参考文献" oauth_clients" (" id")ON UPETE CASCADE ON UPDATE CASCADE   表中外键中的索引是   " oauth_client_endpoints_client_id_redirect_uri_unique"看到   http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html   正确的外键定义。

1 个答案:

答案 0 :(得分:0)

您的SQL语法错误。如果要修改需要使用的类型:

ALTER TABLE oauth_clients MODIFY COLUMN id INT(10) AUTO_INCREMENT;

Take a look at the docs