Laravel 安装执行php artisan migrate 出现字段过长错误

2023-11-02 04:59

本文主要是介绍Laravel 安装执行php artisan migrate 出现字段过长错误,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近在自己研究Laravel

Laravel版本:5.6

PHP版本:7.1.9

Mysql版本:5.7.19

Apache版本:2.4.27

系统版本:windows10

首先要保证电脑安装了composer,和node.js

执行命令

composer global require "laravel/installer"

打开控制台 ,进入你要创建的目录,安装项目(tests 为你的项目文件夹名称)

laravel new tests

也可以执行命令

composer create-project --prefer-dist laravel/laravel tests

 

我用的WAMP可自主切换php版本,因为laravel5.6要求PHP最低版本在7.1,所以我从5.6切换到7.1,

phpinfo显示版本已经是7.1,然而安装laravel系统提示我php版本太低,woc。

最后找到了原因,改变了php版本还要配置系统变量。如图。

858c02a47cd1aa9aa69abd2af24c38c75ff.jpg

在web服务器配置项目根目录在public下,具体不赘述。

配置数据库 在.env文件中配置好数据库。

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravels
DB_USERNAME=root
DB_PASSWORD=

laravel自带了后台登录注册功能,不想写代码啊,所以就干脆直接用他们了。

执行命令:

php artisan migrate

居然报错了!

F:\laraveltest\tests>php artisan migrate
Migration table created successfully.

   Illuminate\Database\QueryException  : SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes (SQL: alter table `users` add unique `users_email_unique`(`email`))

  at F:\laraveltest\tests\vendor\laravel\framework\src\Illuminate\Database\Connection.php:664
    660|         // If an exception occurs when attempting to run a query, we'll format the error
    661|         // message to include the bindings with SQL, which will make this exception a
    662|         // lot more helpful to the developer instead of just the database's errors.
    663|         catch (Exception $e) {
  > 664|             throw new QueryException(
    665|                 $query, $this->prepareBindings($bindings), $e
    666|             );
    667|         }
    668|

  Exception trace:

  1   PDOException::("SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes")
      F:\laraveltest\tests\vendor\laravel\framework\src\Illuminate\Database\Connection.php:458

  2   PDOStatement::execute()
      F:\laraveltest\tests\vendor\laravel\framework\src\Illuminate\Database\Connection.php:458

  Please use the argument -v to see more details.
 

纳闷了半天,几番搜索,终于找到了原因。

app\Providers\AppServiceProvider.php 

找到这个文件加入下面标红代码即可。

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

use Illuminate\Support\Facades\Schema;

class AppServiceProvider extends ServiceProvider

{

    public function boot()

    {

        //

        Schema::defaultStringLength(191);

    }

}

 

 

具体原因嘛,看看文档    索引长度和MySQL / MariaDB

eea7f73e3ee9398174485fabc71eb1eb776.jpg

 

然后重新执行命令就可以看到这样的信息了

F:\laraveltest\tests>php artisan migrate
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated:  2014_10_12_000000_create_users_table
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated:  2014_10_12_100000_create_password_resets_table
 

最后执行命令

php artisan make:auth

 

返回登录界面,可以登录和注册了,忘记密码要发邮件的时候,记得配置.env文件

MAIL_DRIVER=smtp
MAIL_HOST=smtp.exmail.qq.com//自己设置的邮件发送服务器
MAIL_PORT=465//端口号
MAIL_FROM_ADDRESS=maxxxxo@zcidcs.com//自己的邮箱
MAIL_USERNAME=maxxxxo@zcidcs.com//发送者名称
MAIL_PASSWORD=*****************//邮箱密码
MAIL_FROM_NAME=maxxxxo//来源名称
MAIL_ENCRYPTION=ssl//加密方式

在服务器上部署项目时踩的坑

ubuntu16.04+php7.0+mysql5.7+apache2.4

创建项目

cd /var/www/html/
composer create-project --prefer-dist laravel/laravel blog "5.5.*"
cd /var/www/html/blog
cp .evn.example .evn
chmod -R 777 /var/www/html/blog
chown -R www-data:www-data /var/www/html/blog/bootstarp
chown -R www-data:www-data /var/www/html/blog/storage

访问域名出错 

Whoops, looks like something went wrong。

打开config/app.php修改 

'debug' => env('APP_DEBUG', true),

然后看报错信息

RuntimeException

No application encryption key has been specified.

解决办法 

cd /var/www/html/blog
php artisan key:generate

刷新页面,正常了。

这篇关于Laravel 安装执行php artisan migrate 出现字段过长错误的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/328306

相关文章

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

Java实现远程执行Shell指令

《Java实现远程执行Shell指令》文章介绍使用JSch在SpringBoot项目中实现远程Shell操作,涵盖环境配置、依赖引入及工具类编写,详解分号和双与号执行多指令的区别... 目录软硬件环境说明编写执行Shell指令的工具类总结jsch(Java Secure Channel)是SSH2的一个纯J

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转

RabbitMQ 延时队列插件安装与使用示例详解(基于 Delayed Message Plugin)

《RabbitMQ延时队列插件安装与使用示例详解(基于DelayedMessagePlugin)》本文详解RabbitMQ通过安装rabbitmq_delayed_message_exchan... 目录 一、什么是 RabbitMQ 延时队列? 二、安装前准备✅ RabbitMQ 环境要求 三、安装延时队

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

python 线程池顺序执行的方法实现

《python线程池顺序执行的方法实现》在Python中,线程池默认是并发执行任务的,但若需要实现任务的顺序执行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋... 目录方案一:强制单线程(伪顺序执行)方案二:按提交顺序获取结果方案三:任务间依赖控制方案四:队列顺序消

SpringBoot3匹配Mybatis3的错误与解决方案

《SpringBoot3匹配Mybatis3的错误与解决方案》文章指出SpringBoot3与MyBatis3兼容性问题,因未更新MyBatis-Plus依赖至SpringBoot3专用坐标,导致类冲... 目录SpringBoot3匹配MyBATis3的错误与解决mybatis在SpringBoot3如果

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作