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

标签 mysql create-table

我有一个表“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/

相关文章:

oracle - 如何更改现有表以在 Oracle 中创建范围分区

sql-server - 带有 FOREIGN KEY REFERENCES 的错误消息

PHP类问题

php - 显示默认图像

SQL - 从 Select + 用户定义的列和值创建表

mysql - 为使用 SELECT 语句创建的表添加自增主键

mysql - 表定义不正确;只能有一个自动列,并且必须将其定义为键,但它是

java - 使用 Struts 2 在 MySQL 的 JSP 页面中查看图像

mysql - 我的第一个存储过程无法运行

javascript - Angularjs 获取 json 在谷歌地图中不起作用