私信  •  关注

danblack

danblack 最近创建的主题
danblack 最近回复了

建议避免摆弄 任何 mysql表直接访问。

使用 show create procedure old_proc_name

然后 create procedure new_proc_name ....

扔掉旧的 drop procedure old_proc_name

3 年前
回复了 danblack 创建的主题 » MySQL强制变量重新计算

所以你有两个问题 NOW() 返回连接开始时的时间,无论执行了多少条语句。 CURDATE()

中的语法 ALTER TABLE 不能接受任意表达式。

你能做的就是使用 EXECUTE IMMEDIATE :

EXECUTE IMMEDIATE
  CONCAT('ALTER TABLE myTable ADD myColum_',
         DATE_FORMAT(CURDATE(), '%Y_%M_%D_%H_%m'),
         ' SMALLINT(5);')
3 年前
回复了 danblack 创建的主题 » MySQL Docker-检查MySQL服务器是否已启动并运行

因为初始化使用 --skip-networking 使用 --protocol tcp 作为 mysqladmin 执行 ping 在tcp上,即最后一个实例正在运行时。

6 年前
回复了 danblack 创建的主题 » MySQL中如何防止十六进制值转换为科学记数法

如果是字符目的地,请引用它,否则 hexadecimal literal 喜欢 0x558E74

5 年前
回复了 danblack 创建的主题 » 带有join、groupby和having caluse的Mysql更新表

在5.6中,按照 UPDATE ,多表更新有限制,包括 ORDER BY

average 只存在于你 SELECT 查询,它未在更新查询中定义。

您将需要包含一个子查询来扩展where,如下所示:

UPDATE sale_items i
JOIN sales s ON s.id = i.sale_id
SET i.price=(i.price / (s.total/s.currency_total)), i.total=(i.total / (s.total/s.currency_total)), i.total_tax=(i.total_tax / (s.total/s.currency_total))
where s.currency = 'USD' 
and s.currency_total != 0 
and s.`deleted_at` is null
and i.`deleted_at` is null
and s.total <> (select sum(price) from sale_items WHERE sale_id = s.id AND ...)`
6 年前
回复了 danblack 创建的主题 » mysql不重新启动

低于 Process: ExecStartPre 返回存在错误状态

基于错误127,我怀疑 /usr/bin/install 不存在。

6 年前
回复了 danblack 创建的主题 » 使用条件批量更新mysql值

如果存在如您所示的功能关系:

UPDATE posts
SET slug=CONCAT('new-', slug)
WHERE
  slug IN ('post-2', 'post-4'...);
6 年前
回复了 danblack 创建的主题 » mysql-导出数据,然后在存在触发器时再次导入

建议:

  1. 导入到新表中
  2. 在新表上添加触发器
  3. 使用 RENAME TABLE new TO orig, orig TO oldcopy
  4. 满意时 DROP TABLE oldcopy
6 年前
回复了 danblack 创建的主题 » mysql使用什么文件系统?

在linux系统上,所有posix文件系统都可以工作。fread是一个libc构造,它将转换为下面的系统调用,如 read , mmap , write 等。

读、mmap、写操作在linux vfs(虚拟文件系统)层中实现,然后映射到文件系统代码中的特定操作。所以任何posix文件系统都可以使用mysql。

我在mysql代码中看到的惟一文件系统测试是 fallocate 不是在所有文件系统上都实现的syscall(特别是在首次添加时,它现在可能非常可用)。当 错位 不可用。

6 年前
回复了 danblack 创建的主题 » 如何将ws primarykey(id)和date合并到同一表的新列中?(MySQL)

我试过mysql,它允许你的语句,但是你可以设置一个默认值,然后删除它。

select version();
| version() |
| :-------- |
| 8.0.13    |
create table table1 (id int auto_increment primary key);
✓
insert into table1(id) values (NULL),(NULL),(NULL),(NULL)
艾斯
ALTER TABLE table1 ADD date_id VARCHAR(50)  default '';
艾斯
UPDATE table1 SET date_id = CONCAT_WS('-',date_format(CURDATE(),'%Y%m%d'),id);
艾斯
select * from table1
id | date_id   
-: | :---------
 1 | 20190111-1
 2 | 20190111-2
 3 | 20190111-3
 4 | 20190111-4
show create table table1
Table  | Create Table                                                                                                                                                                                                            
:----- | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
table1 | CREATE TABLE `table1` (<br>  `id` int(11) NOT NULL AUTO_INCREMENT,<br>  `date_id` varchar(50) DEFAULT '',<br>  PRIMARY KEY (`id`)<br>) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
alter table table1 alter column date_id DROP DEFAULT, ALGORITHM=INPLACE, LOCK=NONE;
艾斯
show create table table1;
Table  | Create Table                                                                                                                                                                                                 
:----- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
table1 | CREATE TABLE `table1` (<br>  `id` int(11) NOT NULL AUTO_INCREMENT,<br>  `date_id` varchar(50),<br>  PRIMARY KEY (`id`)<br>) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

DB<gt;小提琴 here