我对Laravel和数据库都是新手。我正在写一个学生评估的网络应用程序。我有一个现有的MySQL数据库,它已经包含了我所需要的一切;但是,我正在使用Laravel的auth user表,并尝试添加一个外键,该外键引用MySQL数据库中的教师表。我一直得到以下错误。。。
php artisan migrate:fresh
在Connection.php第664行:
SQLSTATE[HY000]:一般错误:1215不能添加外键约束(SQL:改变表用户
添加约束users_teacher_id_foreign
外键(teacher_id
)引用p4j
.老师
(teacher_id
)
在Connection.php458行:SQLSTATE[HY000]:一般错误:1215不能添加外键约束
我的代码如下。。。
配置/database.php
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DP_PORT', '3306'),
'database' => env('DB_DATABASE', 'p4j'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DP_PASSWORD', '**mypassword**'),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
],
数据库/迁移/2014\u 10\u 12\u 000000\u创建用户\u table.php
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->string('password');
$table->integer('teacher_id')->unsigned();
$table->rememberToken();
$table->timestamps();
});
Schema::table('users', function (Blueprint $table) {
$table->foreign('teacher_id')->references('teacher_id')->on('p4j.teacher');
});
}
app/User.php
protected $fillable = [
'name', 'email', 'password', 'teacher_id'
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
几个可能的问题和解决方案是您的数据库引擎不是INNODB或者迁移文件的加载顺序不正确。对于第一个解决方案,您需要添加$table-
可能的解决方案:
PRIMARYKEY约束和UniQUE约束都用于强制执行实体完整性(将行定义为特定表的唯一实体),但主键不允许空值。指定唯一标识表中行的列。标识的列必须定义为NOTNULL。
而且由于拉氏增量函数也
自动递增的无符号整数(主键)等效列。
只需删除
-
您只需要确保外键的数据类型(p4j.teacher.teacher\u id)与用户表中teacher\u id
列的数据类型相同。
我们需要查看p4j.teacher表的结构。
我有两个表,事务表和付款表,它们在过去的迁移中已经存在。当我试图在它们之间建立一个透视表时,只会得到事务外键的一个错误。“payments”表上的另一个外键创建得很好。这绝对让我感到困惑,我之前关于这个错误的讨论都没有解决这个问题。 错误(参考,MAccounting是数据库的名称): *尽管错误似乎说,payment_transaction表创建成功,以及支付表的外键;唯一中断的是交易的外键。
问题内容: 在PostgreSQL中,我有一个数据库,我打算进行以下表声明: 一切正常,除了在创建最后一个表(更正)时出现以下错误: 错误:没有唯一的约束匹配给定键的引用表“提交” 我对更正表的打算是对每个提交都有唯一的更正,但是一个提交可以(也可以不)具有更正。 我该如何解决这个错误?是设计问题还是表声明错误? 问题答案: 外键约束不关心所引用的列是否在引用另一列本身。但是引用的列 必须 是唯一
我正在尝试在table of数据库与table of数据库之间创建外键: 用户id int(10)未签名的编号 Id int(10)无符号编号 我创建了查询 "外键约束格式错误"有人能帮助我如何实现这一点吗?
我有一个问题与我的Laravel迁移:( 当我运行php artisan migrate时,它会在外键上停止。 首次迁移 还有第二个 运行命令后,我出现以下错误: [Illumb\Database\QueryException] SQLSTATE[HY000]:一般错误:1005无法创建表gsb_larave.35; sql-176_b9(错误号:150“外键约束格式不正确”)(sql:alter
我想知道。 是否可以在外部存储卡中创建数据库? 更新:-
我有4个实体列在下面的职位。客户端和产品已在数据库中。问题在于订单和订单产品。我创建Orders对象,然后添加客户机(已经在数据库中)和OrdersProducts的ArrayList,但出现了错误: 当我不添加客户机时,数据库中只有OrderProducts的ArrayList,但OrderProducts没有外键。怎么了?我使用Mysql服务器和hibernate。