- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
查询是:
$sql="CREATE TABLE IF NOT EXISTS prod_day(
id int(11) NOT NULL AUTO_INCREMENT,
heading TEXT,
image TEXT,
text LONGTEXT,
PRIMARY KEY (id)
)TYPE=InnoDB";
我不想允许任何与标题、图像和文本列重复的条目。同时我希望 id 列自动递增,请告诉我该怎么做。我在网上搜索,但找不到任何我可以理解的解决方案。
谢谢
最佳答案
I don't want to allow any entry that is duplicate with respect to heading , image and text column
您想要的是所有这些列上的 UNIQUE
键 - 但是 MySQL 只会为每个 TEXT
和 LONGTEXT
索引前 767 个字节> 栏目。 (这是字节而不是字符 - 每个字符将在键空间中使用多个字节)。这意味着在 heading
上使用 UNIQUE KEY
两个非常长但不同的字符串将导致重复键错误:
-- Even though the complete strings are different, MySQL isn't indexing the whole string.
-- These two statements will result in a duplicate key error.
INSERT INTO prod_day (heading) VALUES ('a very long string the same in the first 767 bytes ..... asdfjkl');
INSERT INTO prod_day (heading) VALUES ('a very long string the same in the first 767 bytes ..... 1234567');
您有几个选择:
重构您的数据库架构以使用较小的列类型:
CREATE TABLE prod_day(
id int(11) PRIMARY KEY AUTO_INCREMENT,
heading VARCHAR(256),
image VARCHAR(256),
text VARCHAR(256),
UNIQUE (heading, image, text)
) ENGINE=InnoDB
如果这不是一个选择,那么:
使用列数据的 MD5 哈希作为唯一键
CREATE TABLE prod_day(
id int(11) PRIMARY KEY AUTO_INCREMENT,
heading TEXT,
image TEXT,
text LONGTEXT,
heading_md5 VARCHAR(50),
image_md5 VARCHAR(50),
text_md5 VARCHAR(50),
UNIQUE (heading_md5, image_md5, text_md5)
) ENGINE=InnoDB
然后,要么让 PHP 脚本计算文本字段的 md5 哈希值,要么让 MySQL 执行以下操作:
INSERT IGNORE INTO prod_day
(heading, image, `text`, heading_md5, image_md5, text_md5)
VALUES (
'HEADING Lorem ipsum dolor sit amet, ... truncated ...',
'IMAGE Lorem ipsum dolor sit amet, ... truncated ...',
'TEXT Lorem ipsum dolor sit amet, ... truncated ...',
MD5('HEADING Lorem ipsum dolor sit amet, ... truncated ...'),
MD5('IMAGE Lorem ipsum dolor sit amet, ... truncated ...'),
MD5('TEXT Lorem ipsum dolor sit amet, ... truncated ...')
);
Query OK, 1 row affected (0.03 sec)
INSERT IGNORE INTO prod_day
(heading, image, `text`, heading_md5, image_md5, text_md5)
VALUES (
'HEADING Lorem ipsum dolor sit amet, ... truncated ...',
'IMAGE Lorem ipsum dolor sit amet, ... truncated ...',
'TEXT Lorem ipsum dolor sit amet, ... truncated ...',
MD5('HEADING Lorem ipsum dolor sit amet, ... truncated ...'),
MD5('IMAGE Lorem ipsum dolor sit amet, ... truncated ...'),
MD5('TEXT Lorem ipsum dolor sit amet, ... truncated ...')
);
Query OK, 0 rows affected (0.02 sec) -- 0 rows, duplicate avoided!
关于mysql - 关于 INSERT IGNORE mysql 的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5209386/
根据我的理解,INSERT IGNORE 插入一个新条目,如果它不存在,如果存在,则忽略它。所以我已经尝试这样做了一段时间,但似乎没有用。这是我的尝试: insert insert ignore in
出于某种奇怪的原因,StyleCop 不尊重我的文档规则设置。考虑以下代码: internal class SomeClass { public SomeClass() { }
我有一个带有字符串参数和 bool 返回值的方法。我想确保它总是返回 true 我试过了 myClass.Foo(A.Ignored) .WithReturnType() .Returns(tru
这个问题在这里已经有了答案: Filter invoke twice when register as Spring bean (2 个答案) 关闭 1 年前。 我们正面临 SpringSecuri
将 iconv 与 //TRANSLIT//IGNORE 一起使用从 utf8 转换为 ascii 工作正常;它根据当前语言环境(在我的情况下为 de_DE)将不可转换的字符替换为正确的音译: > e
我有这样的查询: $query="INSERT IGNORE INTO mytable (key, word1, word2) VALUES (1, 'abc', 'def')"; 如果因为主键已经存
我有一个 MySQL 表,如下所示: `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `company_id` int(8) unsigned NOT N
git blame --ignore-revs-file显然是现代 Git 中存在的一个选项。 只有一个问题。它不起作用。 或者至少,它对我不起作用: 您可以将其添加到 shell 脚本中: mkdi
使用docker stack deploy,我可以看到如下信息: Ignoring unsupported options: restart 是否意味着重启政策没有到位? 是否必须在撰写文件之外指定它
我正在尝试检查被 git 忽略的文件,我发现 2 个命令显示相同的结果。 哪个是 git check-ignore * git ls-files --others --ignored --exclud
我想为我的 bash 设置和插件等创建一个 git 仓库。我忽略了所有内容(第 0 行),然后在 repo 中手动添加了我想要的文件/文件夹。 (我必须这样做,因为 repo 在我的 ~ 文件夹中。)
我们有一个集中式开发服务器,每个人都在本地结账处工作。我们如何仅忽略本地存储库中的特定目录,而不忽略集中存储库中的特定目录? 一些背景资料: 该项目是一个Drupal站点,该站点的文件目录一直在变化。
当我向 svn:ignore 条目添加一些东西时,它是存储在存储库中还是存储在我的本地副本中? (在 Tortoise 中,为什么添加到 svn:ignore 的项目会出现在我的更改列表中?) 最佳答
我想确保当我从 svn 结帐时,某些 ide 项目元数据文件没有更新。不幸的是,在创建项目时它已被 checkin 项目,但我有我自己的这些文件版本。 svn:ignore 是否也会在更新期间忽略文件
我有一个目录,其中包含具有各种扩展名的文件。我想在 svn:ignore 中执行与以下 .gitignore 代码等效的操作: *.* # ignore everything !.htaccess #
我在实时服务器上有一个大型项目,我想将其提交给 svn 存储库。我已使用 svn add 将所有文件和目录添加到存储库中. 问题是我想提交一个文件夹结构,但没有它的内容。文件夹名称是: /home/m
当我使用 svn:ignore 从 SVN 中排除文件时然后另一个人尝试提交排除的文件, svn 阻止他?或者他必须在他的电脑上执行相同的命令? 最佳答案 想象一下,如果您有一堆 Java 文件( *
如果已经有一个带有_id的文档,是否可以不重新索引文档?也许像MySQL中的INSERT IGNORE查询一样? 我使用批量API,并且重新索引需要很长时间,因此我只想索引丢失的文档。 可能吗? 最佳
我的房间有问题。 我正在使用带有 Gson 转换器的改造作为其余 api,我想与房间分享 pojos。一般来说它可以工作,但在某些情况下我需要忽略一些字段,因为我有对象列表。我尝试使用 @Ignore
我正在使用 vba 代码从数组中查找值。有些结果是“#N/A”,并且单元格的左上角会出现一个绿色三角形。我想自动删除绿色三角形(忽略错误),但“#N/A”结果应该保留,只需删除绿色三角形即可。 有人知
我是一名优秀的程序员,十分优秀!