没有不值得去解决的问题,也没有不值得去学习的技术!

SQLSTATE[42000]: Syntax Error or Access Violation: 1059 in Laravel 6 Migrations When the Index Identifier Is Too Long

When executing a database migration, the following error occurred: SQLSTATE[42000]: Syntax error or access violation: 1059 Identifier name 'theme_installation_version_preset_theme_store_theme_version_id_index' is too long

1. When executing a database migration, the following error occurred: SQLSTATE[42000]: Syntax error or access violation: 1059 Identifier name ‘theme_installation_version_preset_theme_store_theme_version_id_index’ is too long. See Figure 1.

When executing a database migration, the following error occurred: SQLSTATE[42000]: Syntax error or access violation: 1059 Identifier name 'theme_installation_version_preset_theme_store_theme_version_id_index' is too long
Figure 1
Plaintext

   Illuminate\Database\QueryException  : SQLSTATE[42000]: Syntax error or access violation: 1059 Identifier name 'theme_installation_version_preset_theme_store_theme_version_id_index' is too long (SQL: alter table `theme_installation_version_preset` add index `theme_installation_version_preset_theme_store_theme_version_id_index`(`theme_store_theme_version_id`))


2. The index length limit in MySQL 5.7 defaults to 64, while the length of theme_installation_version_preset_theme_store_theme_version_id_index is 68. See Figure 2.

The index length limit in MySQL 5.7 defaults to 64, while the length of theme_installation_version_preset_theme_store_theme_version_id_index is 68.
Figure 2

3. In Laravel 6, every index method accepts an optional second parameter to specify the index name. If omitted, the name will be generated based on the table and column names. I ultimately decided to explicitly specify the index name: tivp_theme_store_theme_version_id_index, using only the initials of the table name.

PHP

$table->unsignedBigInteger('theme_store_theme_version_id')->comment('主题商店的主题版本ID')->index();

PHP

$table->unsignedBigInteger('theme_store_theme_version_id')->comment('主题商店的主题版本ID')->index('tivp_theme_store_theme_version_id_index');

4. The migration executed successfully.

关于作者 · 持续学习与技术实践

我是一名拥有 15 年以上开发经验的技术从业者,自 2013 年起持续运营个人技术博客,记录工作与个人项目中遇到的真实问题,以及解决问题过程中的探索、实践和思考。

除了技术写作,我也在持续开发和维护自己的独立项目,探索新技术和新工具在实际场景中的应用。我始终相信,没有不值得去解决的问题,也没有不值得去学习的技术。

如果这篇文章对你有所帮助,欢迎浏览博客中的其他文章,也欢迎交流技术经验与想法。

关于我  ·  GitHub  ·  邮件联系