鍍金池/ 問答/ 數(shù)據(jù)庫問答
骨殘心 回答

not null的字段在插入數(shù)據(jù)的時候必須提供值。

病癮 回答

朋友,你的問題解決了嗎,我也遇到了同樣的問題

冷眸 回答

為什么要用16進(jìn)制呢,整數(shù)類型肯定是最適合用作主鍵的,還可以設(shè)為自增;
千萬別用varchar類型的主鍵,insert和一些select會變慢。

糖果果 回答

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'db_blog.t2.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

其實這錯誤說得挺明白了

推測你服務(wù)器上的Mysql版本是5.7?
mysql 文檔:https://dev.mysql.com/doc/ref...

解決方案一:修改Mysql配置

通過這下面語句disable only_full_group_by。

mysql> set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
mysql> set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

解決方案二:修改你的SQL

select t2.id,t2.typeName,count(t1.id) as blogCount from t_blog t1 right join t_blogType t2 on t1.typeId=t2.id group by t2.typeName order by t2.orderNo;

修改為

SELECT t2.id,
       t2.typeName,
       count(t1.id) AS blogCount
FROM t_blog t1
RIGHT JOIN t_blogType t2 ON t1.typeId=t2.id
GROUP BY t2.typeName,
t2.id
ORDER BY t2.orderNo;

注意改動,在group by里加了t2.id

忠妾 回答

今天下午解決了,把那個包刪了,然后在加進(jìn)去,這樣弄了4次,突然就好了,不知道是什么原因

厭遇 回答

.orderByRaw('RAND()')

就可以

逗婦乳 回答

16:27 修改

[Student]
| student_id | name | ... |

[Class]
| class_id | ... |

[ClassAndStudent]
| cs_id | class_id | student_id | state | is_close |

[Status]
| cs_id | option | date |

[ClassAndStudent.state] 是每天系統(tǒng)自動根據(jù) [Status.date] 來刷新的:

// cs_id 為空時刷新整張表,不為空時即只刷新指定學(xué)生在指定班級的狀態(tài)
update_date(cs_id) {
    result = cs_id == null ? Status.selectAll().orderBy('date')
                           : Status.selectByCSID(cs_id);
    for (row : result) {
        if (row.date == current_date) {
            switch (row.option) {
                case 'in':
                    ClassAndStudent.selectBy(row.cs_id).setState('就讀');
                    ClassAndStudent.selectBy(row.cs_id).setClassId(new_class_id);
                    break;
                ...
            }
        }
    }
}

然后給 [Status] 表加個觸發(fā)器,或者直接每次前端提交新狀態(tài)時,后端代碼加入:

cs_id = Status.insert({class_id}, {student_id}, 'in', {date});
update_state(cs_id);

這樣 [ClassAndStudent.state] 就是該學(xué)生在該班的實時狀態(tài)了。


原答案:

因為不太清楚你所說的 "混亂" 是指什么,以下僅作討論:

[Student]
| student_id | name | ... | is_close

[Class]
| class_id | student_id | option | date |

option通過 in/out/stop/recover 來表示操作,date保存該操作的時間。
查詢時只需要判斷 [Student.is_close] ,然后對特定student_id的結(jié)果集通過 [Class.date] 按降序排序,即可知道該學(xué)生是否結(jié)課,未結(jié)課的話就能獲取該學(xué)生當(dāng)前所讀的班級以及當(dāng)前狀態(tài)(in/out/stop/recover)。

查詢考勤則是,對于日期早于query_dateoptionstop的,is_close也為假的,即為需要考勤的學(xué)生,此時group by一下就可以按班為單位查詢了。

拼未來 回答

你好?我最近也在玩laravel想用mycat做讀寫分離可是怎么樣配置連接呢

逗婦乳 回答

是不是你設(shè)置了默認(rèn)最多顯示多少條?單獨查詢過那些數(shù)據(jù)是否存在了嗎?

心癌 回答

1首先重EXCEL表的機(jī)構(gòu)分析,假設(shè)省市縣excel區(qū)域為A B C
那么 A2-A(n)的就是表示省級內(nèi)容 以此類推

2.通過你js分析是三級數(shù)據(jù),一般就要循環(huán)三次才能啦到數(shù)據(jù)
所以
$i = 2; //因為數(shù)據(jù)從第二行開始
foreach($arr as $p) {

$pmsg = $p['name']; //這是省的名稱
foreach($p['cityList'] as $c) {
    $cmsg = $c['name'];
    foreach($c['areaList'] as $a) {
        $amsg = $a;
        //假如是有phpexcel;
        那樣就是設(shè)置$i行的A數(shù)據(jù)等于$pmsg
        那樣就是設(shè)置$i行的B數(shù)據(jù)等于$cmsg
        那樣就是設(shè)置$i行的C數(shù)據(jù)等于$amsg
        
        跟著i累加,意思是換行
        $i++;
    } 
}

}

中文支持在最頂部引入試一下

夢一場 回答

感覺像是mysql連不上的原因,你最好自己排查

  1. 用其他工具連mysql,看是否能正確連上mysql服務(wù)
  2. 在mysql服務(wù)所在主機(jī)查看是否連接正常,服務(wù)啟動沒有,或者看相應(yīng)日志
怣人 回答

在mybatis配置的sql xml文件中,用if標(biāo)簽判斷是否等于0,然后用foreach標(biāo)簽來實現(xiàn)in操作。

挽歌 回答

可以使用 觸發(fā)器 trigger

空白格 回答

1、數(shù)據(jù)庫連接通過配置連接池來管理,不用特意去判斷連接是否正常,因為其會自動進(jìn)行重連操作
2、sync同步數(shù)據(jù)庫表結(jié)構(gòu)只需要在開始階段的執(zhí)行一次即可(只要表結(jié)構(gòu)與你的model對應(yīng),其實是不需要sync操作的),這種場景建議使用promise.all(放到app.js里執(zhí)行):

(async () => {
    try {
        await Promise.all([
            User.sync({force: false}),
            Order.sync({force: false}), 
            // ...      
        ]);
    } catch (error) {
        console.log(error);
    }
})();
離夢 回答

p_code 是int類型呀。但是你的like后面是字符串,需要類型轉(zhuǎn)化的列,mysql 是不走索引的。

你把p_code 修改為 varchar類型就可以了。一般like用在字符串類型的列上面。

胭脂淚 回答

values里面多個值的寫法,不是sql標(biāo)準(zhǔn)功能,我知道的只有mysql支持。

吢涼 回答

我一般是封裝成一個多參數(shù)的函數(shù), 如果參數(shù)為空字符串或者為-1就表示沒有此查詢條件

from sqlalchemy.sql import and_, or_
# 多條件查詢
def get_safety_list(offset, limit, con_date1, con_date2, con_invite, con_name, con_plan, salesman, con_pay):
    try:
        condition = (Safety.id > 0)

        if con_date1 > 0:
            condition = and_(condition, Safety.date >= con_date1)
            condition = and_(condition, Safety.date <= con_date2)

        if con_invite != "":
            condition = and_(condition, Safety.invite.ilike('%' + con_invite + '%'))
        if con_name != "":
            condition = and_(condition,
                             or_(Safety.name.ilike('%' + con_name + '%'), Safety.phone.ilike('%' + con_name + '%')))
        if con_plan != -1:
            condition = and_(condition, Safety.safety_plan == con_plan)

        if len(salesman) > 0:
            condition = and_(condition, Safety.invite.in_(salesman))

        if con_pay != -1:
            condition = and_(condition, Safety.origin == con_pay)

        a = Safety.query.filter(condition)
        count = a.count()
        a = a.order_by(Safety.id.desc()).limit(limit).offset(offset).all()
        return a, count
    except Exception as e:
        logging.error("manager.dbhelper.py get_safety_list exception:" + str(e))
    return (), 0