我有一张桌子,上面有一列“酒店”。该项目是在 Laravel 5.4 中创建的,因此我使用了 Migrations。
$table->string('hotel', 50);
这是 MYSQL VARCHAR (50)。它运作良好,因为当我开发时,我使用了简短的酒店名称,例如“纽约希尔顿 5"*.
现在项目已经投入生产,客户问为什么不能输入长酒店名称。我用这样的模拟酒店名称测试了它“长长长长长长长长长长长长长酒店名5星”
它给了我一个错误:
“SQLSTATE[22001]:字符串数据,右截断:1406 数据太长,无法
第 1 行的“酒店”列”
我已在 Sequel Pro 中打开数据库并更改它
每次更改后,我都使用相同的“长长长长长长长长长长长长长长长长长长长长长长长长长长长长的酒店名称 5 开头”进行测试,并得到相同的错误(见上文)。
我检查了列的类型
SHOW FIELDS FROM table_name
它给了我
领域 |类型
酒店 |文本
所以该字段的类型确实是“文本”(65 535 个字符)。
也许它与 Laravel 迁移文件(见上文)有某种联系,我在开始时设置了 VARCHAR (50) ?但我无法在生产环境中重新运行迁移,因为该表现在有数据。
将不胜感激任何帮助。
UPDATE:我发现它实际上在数据库中保存了那么长的酒店名称。但用户每次提交表单后仍然会遇到这个恼人的错误......