相关疑难解决方法(0)

如何截断外键约束表?

为什么没有一个TRUNCATEmygroup工作?即使ON DELETE CASCADE SET我得到了:

错误1701(42000):无法截断外键约束中引用的表(mytest.instance,CONSTRAINT instance_ibfk_1FOREIGN KEY(GroupID)REFERENCES mytest.mygroup(ID))

drop database mytest;
create database mytest;
use mytest;

CREATE TABLE mygroup (
   ID    INT NOT NULL AUTO_INCREMENT PRIMARY KEY
) ENGINE=InnoDB;

CREATE TABLE instance (
   ID           INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
   GroupID      INT NOT NULL,
   DateTime     DATETIME DEFAULT NULL,

   FOREIGN KEY  (GroupID) REFERENCES mygroup(ID) ON DELETE CASCADE,
   UNIQUE(GroupID)
) ENGINE=InnoDB;
Run Code Online (Sandbox Code Playgroud)

mysql truncate constraints foreign-keys dml

601
推荐指数
9
解决办法
46万
查看次数

SQL键,MUL与PRI对比UNI

MySQL中的MUL,PRI和UNI有什么区别?

我正在使用以下命令处理MySQL查询:

desc mytable; 
Run Code Online (Sandbox Code Playgroud)

其中一个字段显示为MUL键,其他字段显示为UNI或PRI.

我知道如果一个密钥是PRI,那么每个表只能有一个记录与该密钥相关联.如果密钥是MUL,这是否意味着可能存在多个关联记录?

这是mytable的回应.

+-----------+---------+------+-----+---------+-------+
| Field     | Type    | Null | Key | Default | Extra |
+-----------+---------+------+-----+---------+-------+
| courseid  | int(11) | YES  | MUL | NULL    |       | 
| dept      | char(3) | YES  |     | NULL    |       | 
| coursenum | char(4) | YES  |     | NULL    |       | 
+-----------+---------+------+-----+---------+-------+
Run Code Online (Sandbox Code Playgroud)

mysql sql key

234
推荐指数
4
解决办法
22万
查看次数

Laravel Eloquent truncate - 外键约束

我在使用Laravel 5删除数据时遇到了一些问题.我似乎陷入了"外键约束",但我不明白为什么.

在我当前的数据库模型中,我有一个datapoints表,它有一个传感器表的外键(datapoints.sensors_id - > sensor.id).

我正在尝试的代码:

Route::get('/truncateData', function() {
DB::table('datapoints')->truncate();
DB::table('sensors')->truncate();
return 'Done...';
Run Code Online (Sandbox Code Playgroud)

});

结果:

SQLSTATE [42000]:语法错误或访问冲突:1701无法截断外键约束中引用的表(alerting.datapoints,CONSTRAINT datapoints_sensor_id_foreign FOREIGN KEY(sensor_id)REFERENCES alerting.sensors(id))(SQL:truncate sensors)

如果订单是反向的(首先删除传感器),我会理解这个约束,但是当数据点为空时,删除传感器应该没有问题吗?我也尝试过:

DB::table('datapoints')->delete();
DB::table('sensors')->delete();
return 'Done...';
Run Code Online (Sandbox Code Playgroud)

最后我还尝试在delete语句之间显式添加'DB :: commit()',但都返回相同的结果.

这是正常的行为吗?我错过了什么吗?

提前致谢.

干杯,

韦斯利

php postgresql constraints laravel

14
推荐指数
3
解决办法
8811
查看次数

标签 统计

constraints ×2

mysql ×2

dml ×1

foreign-keys ×1

key ×1

laravel ×1

php ×1

postgresql ×1

sql ×1

truncate ×1