Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL-在一行中存储大量文本字段_Mysql - Fatal编程技术网

MYSQL-在一行中存储大量文本字段

MYSQL-在一行中存储大量文本字段,mysql,Mysql,我对PHP/MYSQL相当陌生,我有一个网站,它有多个长表单,并且定期添加更多表单。所有表单中的数据都存储在“数据”MYSQL表中 我存储数据的方法是有200个文本列(因为我的表格长达200个问题)。并不是每个问题都需要一个文本栏,大约50%是单整数或几个单词的答案,但由于顺序不同,这是我能想到的最简单的方法 现在,我发现在一行中存储的文本值似乎不能超过10个,因为出现以下错误: 行大小太大(>8126)。将某些列更改为TEXT或BLOB或使用ROW\u FORMAT=DYNAMIC或ROW\u

我对PHP/MYSQL相当陌生,我有一个网站,它有多个长表单,并且定期添加更多表单。所有表单中的数据都存储在“数据”MYSQL表中

我存储数据的方法是有200个文本列(因为我的表格长达200个问题)。并不是每个问题都需要一个文本栏,大约50%是单整数或几个单词的答案,但由于顺序不同,这是我能想到的最简单的方法

现在,我发现在一行中存储的文本值似乎不能超过10个,因为出现以下错误:

行大小太大(>8126)。将某些列更改为
TEXT
BLOB
或使用
ROW\u FORMAT=DYNAMIC
ROW\u FORMAT=COMPRESSED
可能会有所帮助。在当前行格式中,768字节的前缀
BLOB
内联存储

我哪里出了问题?像这样存储数据的最佳方式是什么?我知道200列似乎很多,我读过这篇文章,这一定意味着我没有正确地规范化我的数据,但在这种情况下,创建大量的表似乎是不明智的,因为所有的数据都在一个级别上连接到它来自的表单。用数据将其拆分为20个表似乎不太正确


<>任何帮助都是非常感谢的。

< P>这是你应该考虑NoSQL的情况。您没有固定的架构。
考虑使用


创建一个表,其中每个字段都是一个单独的行:

CREATE TABLE Question_Fields (
    question_id INT, -- FK to Question table
    field_num INT,
    field_value VARCHAR(1024)
);

然后,您可以将此表与
问题
表联接,以获取该问题的所有文本字段。

您应该将每个问题保存为行,并且在每行中都有列名f.e.id\u字段。。。那么,您的表将不会有200列,而是只有两列(取决于表中的其他列).

您应该将每个问题保存为行,并且在每行中有列名f.e.id_字段。。。那么您的表将不会有200列,而是只有两列(取决于表中的其他列)…谢谢!这就是我一直在寻找的,只是没有这样想过,没有理由所有的答案都要排在一行!灯泡时刻!我只是把它作为一个答案加了上去:-)谢谢你的回答,这是否意味着我需要为每一组数据建立一个新的表?表格要填100次。不,你只需要这张表。您所要做的就是将所有这些文本列从问题表中移出,并移入该表中的行中。外键将它们链接回问题表中的原始行。
CREATE TABLE Question_Fields (
    question_id INT, -- FK to Question table
    field_num INT,
    field_value VARCHAR(1024)
);