gpt4 book ai didi

MySQL:如果不存在则创建表总是附加数据而不是跳过创建表

转载 作者:可可西里 更新时间:2023-11-01 08:45:33 33 4
gpt4 key购买 nike

我有一个表“table1”,我想创建另一个表,但将其存储在内存中 (engine=memory),其中包含来自 table1 的数据。

在我的测试服务器中,SQL 按预期工作 - 创建表一次,将数据从“table1”放入其中,下次跳过插入,因为表“mem_table”已经存在。

在生产服务器中 SQL 是意外的 - 它创建表 'mem_table',从 'table1' 插入数据。每次运行它都会一次又一次地插入数据。

SQL:

CREATE TABLE IF NOT EXISTS `mem_table` (
`f1` mediumint(9) NOT NULL AUTO_INCREMENT,
`f2` mediumint(9) NOT NULL,
`f3` varchar(100) NOT NULL
PRIMARY KEY (`f1`),
KEY `f3` (`f3`)
) ENGINE=MEMORY DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 SELECT NULL f1, f2, f3 FROM table1;

最佳答案

这种行为,如documentation说,是版本相关的。

因此,解决方案不是在 CREATE TABLE 中使用“IF NOT EXISTS”。而如果表存在,mysql只是返回错误,并没有反复插入数据。

CREATE TABLE `mem_table` (
`f1` mediumint(9) NOT NULL AUTO_INCREMENT,
`f2` mediumint(9) NOT NULL,
`f3` varchar(100) NOT NULL
PRIMARY KEY (`f1`),
KEY `f3` (`f3`)
) ENGINE=MEMORY DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 SELECT NULL f1, f2, f3 FROM table1;

关于MySQL:如果不存在则创建表总是附加数据而不是跳过创建表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30328693/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com