【问题标题】:SET FORIENG KEY CHECKS NOT working Laravel Migration设置外键检查不工作 Laravel 迁移
【发布时间】:2016-03-23 16:24:54
【问题描述】:

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

[照亮\数据库\查询异常]
SQLSTATE [HY000]:一般错误:1025 重命名错误 './abc/#sql-45d_6d' 到 './abc/oauth_clients' (errno: 150) (SQL: ALTER TABLE o auth_clients 更改 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 STATUS 上显示的错误

------------ 最新的外键错误 ------------------------ 151217 17:37:37 表 abc/oauth_client_endpoints 的外键约束出错:没有索引 将包含列作为第一列的引用表, 或引用表中的数据类型与表中的数据类型不匹配 桌子。约束: , 约束 “oauth_client_endpoints_client_id_foreign”外键(“client_id”) 参考 "oauth_clients" ("id") ON DELETE 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 正确的外键定义。

【问题讨论】:

    标签: php mysql laravel


    【解决方案1】:

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

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

    Take a look at the docs

    【讨论】:

    • 我也试过这个。也不行。返回相同的错误
    • 如果不是相同的代码,它如何返回相同的错误?我刚刚在我本地的 Laravel 实例中尝试过它,它可以正常工作。
    • 这与我确定的键有关。让我告诉你 INNODB 状态
    • 这不是您原始问题的一部分。我认为您应该更正您的外键定义。
    猜你喜欢
    • 2021-02-08
    • 2020-06-05
    • 2016-03-21
    • 2016-06-06
    • 2019-09-23
    • 1970-01-01
    • 2014-03-31
    • 2019-01-31
    • 2014-08-09
    相关资源
    最近更新 更多