我试图将外键放在桌子上,但我收到了这条消息:
[Illuminate\Database\QueryException]
SQLSTATE[42000]: Syntax error or access violation: 1091 Can't DROP 'user_id
'; check that column/key exists (SQL: alter table `posts` drop foreign key
user_id)
Run Code Online (Sandbox Code Playgroud)
我正在使用迁移来执行此操作:
Schema::table('posts', function($table) {
$table->dropForeign('user_id');
$table->foreign('user_id')
->references('id')->on('users')
->onDelete('cascade');
});
Run Code Online (Sandbox Code Playgroud)
我确信'posts'表中存在'user_id':
Field | Type | Null | Key | Default | Extra |
+------------+------------------+------+-----+---------------------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| user_id | int(10) unsigned | NO | MUL | NULL | |
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?这是一个bug还是什么?
------------------
更新:
我发现原因可能是"你试图删除另一个表正在使用的密钥".
这是否意味着我应该放弃那些首先使用'posts'表的表?
(function () {
"use strict";
function initialize() {
myList = ['one', 'two', 'three'];
}
function displayList() {
var i, n;
for (i = 0, n = myList.length; i < n; i += 1) {
alert(myList[i]);
}
}
initialize();
displayList();
})();
Run Code Online (Sandbox Code Playgroud)
如果不使用var,myList变量应该被创建为一个全局变量.无论哪种方式,代码都应该运行.代码有什么问题?
cout << "Enter a positive integer or zero: ";
getline(cin, streamStr);
stringstream(streamStr) >> number;
if (!number) {
cout << "invalid input detected or the input is too big.\n";
return 1;
}
Run Code Online (Sandbox Code Playgroud)
像"%234"或"sdf2334"这样的输入总是下降到0,这在bool表达式中是假的,但0仍然是一个数字.如何检查输入是否真的像"%234"一样无效?
char sign = '+';
cout << "Enter '+' for addition or '-' for subtraction: ";
cin >> sign;
if ( sign != '+' || sign != '-' ) {
cout << "you can only enter '+' or '-'!\n";
return 1;
}
Run Code Online (Sandbox Code Playgroud)
当我输入"+"或" - "符号时,将显示错误消息.