ProgrammingError: Unknown column 'Nrr1' in 'field list'
时间: 2024-01-04 17:19:48 浏览: 25
根据提供的引用内容,"ProgrammingError: Unknown column 'Nrr1' in 'field list'" 是一个数据库错误,表示在字段列表中找不到名为 'Nrr1' 的列。这通常是由于查询语句中引用了不存在的列名导致的。
要解决这个问题,可以采取以下步骤:
1. 检查查询语句:确保查询语句中引用的列名是正确的,并且与数据库中的列名一致。
2. 检查表结构:确认数据库表中是否存在名为 'Nrr1' 的列。可以使用数据库管理工具或查询语句来查看表结构。
3. 检查数据库连接:如果使用的是外部数据库,确保数据库连接正常,并且可以正确访问表和列。
4. 检查数据库版本:某些数据库版本可能对大小写敏感。如果数据库列名区分大小写,请确保查询语句中的列名大小写与数据库中的列名一致。
如果以上步骤都没有解决问题,可能需要进一步检查数据库配置和查询语句的正确性。
相关问题
代码解析// 时间片轮转 void RR() { // 按到到达顺序排序 for (int i = 1; i <= num; i++) { for (int j = i+1; j <= num; j++) { if(p[i].arrival_time > p[j].arrival_time) { p[0] = p[j]; p[j] = p[i]; p[i] = p[0]; } } } int pp; printf("请输入时间片大小:\n"); scanf("%d", &pp); // 初始化标记位 for (int i = 1; i <= num; i++) { p[i].sign_RR = 0; // 记录服务时间 p[i].sign_RR2 = 0; // 记录进程完成 p[i].start_time = -1; p[i].finished_time = -1; } int N = num; int z = 0; // 总时间 int flag; do { for (int i = 1; i <= N; i++) { if (p[i].sign_RR == p[i].burst_time) { continue; } if (p[i].start_time == -1) { p[i].start_time = z; } for(int j=0; j<pp; j++){ if (p[i].sign_RR != p[i].burst_time) { //printf("%s", p[i].name); p[i].sign_RR++; z++; } if (p[i].sign_RR == p[i].burst_time) { if (p[i].finished_time == -1) { p[i].finished_time = z; } p[i].sign_RR2 = 1; } } } // 结束条件 flag = 0; for (int i = 1; i <= num; i++) { if (p[i].sign_RR2 == 1) { flag++; } } } while(flag != num); for (int i = 1; i <= num; i++) { p[i].T = p[i].finished_time - p[i].arrival_time; p[i].W = (double)p[i].T / p[i].burst_time; } double sum_T = 0; double sum_W = 0; for (int i = 1; i <= num; i++) { sum_T += p[i].T; sum_W += p[i].W; } double o_T = sum_T / num; double o_W = sum_W / num; printf("\nRR "); display(); printf("\n平均周转时间:%.2lf", o_T); printf("\n平均带权周转时间:%.2lf", o_W); }
这是一个时间片轮转算法的实现代码。该算法是一种基于时间片的调度算法,通过将进程分割成若干个时间片,轮流执行这些时间片,从而达到多个进程并发执行的效果。
具体代码实现中,首先对进程按照到达时间进行排序,并初始化一些标记位和计时器。然后循环执行进程,每次执行一个时间片,如果当前进程还没执行完,继续执行下一个时间片,直到该进程执行完成或时间片结束。当所有进程都执行完成后,计算平均周转时间和平均带权周转时间并输出。
需要注意的是,该代码中的进程结构体包含了到达时间、服务时间、开始时间、完成时间、周转时间、带权周转时间等属性,因此需要在主函数中先对进程进行初始化。另外,时间片大小需要用户输入才能确定。
function dydt=Infante_horizontal(t,x,formom) dydt = zeros(6,1); ur = x(1);vr = x(2); r = x(3);xx=x(4);yy=x(5); psi = x(6); %x 为当前时刻 USV 的状态[u v r x y psi ] F = formom(1);%%PID 输出力 T = formom(2);%%?¨PID 输出力矩 uc = formom(3)*( cos(formom(4))*cos(psi) + sin(formom(4))*sin(psi) ); %海流速度分量 vc = formom(3)*( -cos(formom(4))*sin(psi) + sin(formom(4))*cos(psi) ); %海流速度分量 u = ur+uc; %%USV 在海流影响下的真实速度 v = vr+vc; %%USV 在海流影响下的真实速度 %%%%%%AUV 水动力系数 m = 40; Xdu = -1.42; Xu = 0.1; Xuu = 8.2; Ydv = -38.4; Yv = 10; Yvv = 200; Ydr = -2.5; Yr = 5; Ndr = -8.9; Ndv = 2.2; Nv = 36; Nr = 5; Nrr = 15; Iz = 8.0; Yuv = 0; Yur = u*Xdu; Nuv = u*(Ydv-Xdu); Nur = u*Ydr; d11 = Xu+Xuu*abs(ur); d22 = Yv+Yvv*abs(vr); d66 = Nr+Nrr*abs(r); d26 = Yr; d62 = Nv; c26 = m-Xdu; c62 = Xdu-Ydv; m11 = m-Xdu; m22 = m-Ydv; m26 = -Ydr; m66 = Iz-Ndr; A = -d22*vr+(d26-ur*c26-m*uc)*r; B = (d62-ur*c62)*vr-d66*r+T; ur = x(1);vr = x(2); r = x(3);xx=x(4);yy=x(5); psi = x(6); %%%%AUV 动力学模型 dydt(1) = (1/m11)*(-d11*ur+F); dydt(2) = (A*m66-B*m26)/(m22*m66-m26*m26); dydt(3) = (B*m22-A*m26)/(m22*m66-m26*m26); %%%AUV 运动学模型 dydt(4) = u*cos(psi) - v*sin(psi); dydt(5) = u*sin(psi) + v*cos(psi); dydt(6) = r ;
这是一个函数 Infante_horizontal,用于模拟 AUV(自主水下车辆)在海流影响下的运动。该函数接受三个输入参数:当前时间 t,当前状态 x 和 PID 输出力与输出力矩 formom。其中,状态 x 包含当前时刻 AUV 的速度、位置和姿态,即[u v r x y psi]。函数返回一个包含六个元素的列向量 dydt,分别表示 AUV 的速度、加速度和角速度。
函数首先根据当前状态计算出 AUV 在海流影响下的真实速度 u 和 v。然后,根据 AUV 的水动力系数和动力学模型计算出 AUV 的加速度,再根据 AUV 的运动学模型计算出 AUV 的速度、位置和姿态的变化率,即 dydt。
在函数中,还使用了 PID 控制器输出的力和力矩,以及海流的速度分量。函数中的注释详细解释了每个变量的含义和计算方法。