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