分类 "Database" 下的文章

问题:mysql单个字段如何区分大小写?
解决:方法有多种,可以在查询的时候增加binary,也可以修改数据库
方法:
方法一:

select * from some_table where binary str='abc'
select * from some_table where binary str='ABC'

方法二:

ALTER TABLE logtest CHANGE title title VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE comics CHANGE mhid mhid VARCHAR(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL default '' COMMENT 'mh的id';

阅读全文

问题:Moodle系统添加用户时报错,ERROR 1253 (42000): COLLATION 'utf8mb4_bin' is not valid for CHARACTER SET 'utf8'

解决:debug显示出错误信息,需要修改mysql数据表的编码

方法:

debug的信息显示查询mdl_user表时出错,如下

SELECT 'x' FROM mdl_user WHERE LOWER(email) COLLATE utf8mb4_bin = LOWER('student1@qq.com') AND mnethostid = 1 AND id <> -1 LIMIT 0, 1;

阅读全文

问题:由于用户多次点击按钮,导致增加数据时多次添加

解决:前端增加事件失效功能,后端增加锁机制

方法:

以下方法未试验过

1、代码锁(给代码的执行上锁,仅对单端口多进程有效,用户需等待前一请求处理结束)

import lock

lock.acquire()
你的业务逻辑
lock.release()

阅读全文

问题:sqlalchemy如何对同一张表查询两次?

解决:使用sqlalchemy.orm模块中的aliased

方法:

from sqlalchemy.orm import aliased

ToUser = aliased(User)
self.db.query(
    User.id, User.username, ToUser.id.label('to_user'), ToUser.username.label('to_username'),
    Reply.body, Reply.create_time).filter(Reply.to_user == ToUser.id, Reply.create_id == User.id
    ).all()

阅读全文

问题:如何查询mysql数据表的注释?

方法:

SELECT COLUMN_NAME, column_comment FROM INFORMATION_SCHEMA.Columns WHERE
    table_name='users' AND table_schema='dongman';

拓展:

/* 查询数据库 ‘dongman’ 所有表注释 */
SELECT TABLE_NAME,TABLE_COMMENT FROM information_schema.TABLES WHERE table_schema='dongman';

阅读全文