尝试将过多数据放入MySQL的TEXT数据类型

7
假设我有一个html表单(实际上我有一个编辑器-TinyMCE),通过PHP将一堆文本插入到Mysql表中。 我想知道以下内容:
如果在Mysql列中有TINYTEXT数据类型-如果用户尝试将超过255个字节的文本放入Mysql表中会发生什么?
应用程序是否保存前255个字节并“截断”其余部分? 还是没有保存任何内容到Mysql表中,mysql发出警告?? 或者以上都不是?
实际上,我想要做的是: 通过将Mysql中的列数据类型设置为TEXT数据类型来限制用户表单输入的大小,可以容纳最多64 KB的文本。 我希望限制从用户传递到数据库的文本量,以便用户无法一次向服务器发送太多数据。
因此,基本上,我想知道如果用户通过TinyMCE编辑器放入超过65535个字节的文本,假设Mysql表中有TEXT数据类型,会发生什么。

我还想知道,如果MySQL服务器对任何数据类型(TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT)的数据量过大时反应是否相同。或者是否存在差异? - Matjaž Lojen
呵呵...我正在构建一个小型的自定义CMS,但我还没有完成...我的意思是我还没有包含TinyMCE并设计整个数据库。我只是提前考虑潜在问题和潜在解决方案,所以我试图通过提问来节省时间,而不是尝试它... - Matjaž Lojen
答案可能对其他人也有用。 - Matjaž Lojen
3个回答

4

MySQL默认情况下,如果数据太长,则会将其截断并发送警告。

SHOW WARNINGS;
Data truncated for foo ..

明确一点:数据将会被保存,但是你将会丢失那个过大的部分。


1

默认的mysql配置会在数据大于最大表字段定义大小时截断数据,这将生成一个非阻塞警告。

如果您想要一个阻塞错误,您需要将sql_mode设置为STRICT_ALL_TABLES

dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html#sqlmode_strict_all_tables

在我看来,最好的方法是通过应用软件来管理此错误。

希望这可以帮到你。


0

如果您在MySQL的TEXT字段中输入了太多数据,它仍会插入该行,但该字段将被截断为最大长度,并发出警告。

即使MySQL阻止添加该行也不是限制用户输入数据长度的好方法。您应该在PHP中检查POST字符串的长度,如果太长,则根本不运行查询-并告诉用户为什么未输入其数据。

除此之外,您还可以防止用户在客户端输入过多字符(尽管您始终应该在服务器端进行检查,因为某些人可能会绕过客户端限制)。似乎在TinyMCE中没有内置的方法来实现这一点,但可以通过编写回调函数来实现:Limit the number of character in tinyMCE


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接