问题1: 默认字符串字段的长度是255
D:\Dev_PHP\wamp\www\laravels\BaseManage>php artisan migrate [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`)) [PDOException] SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes参考:
思考:
(1) 生产环境如果使用了artisan的数据库rollback或者reset命令,则后果很严重,因此可以在down方法里面做个判断,生产环境则不执行drop table的操作。(2) 迁移文件: Create table的时候,如果对表有修改,可以增加table_update迁移文件,在里面的up方法增加、删除、修改字段。
Schema::table("users",function (Blueprint $table){ $table->string("name2"); });(3) 本地Hoozt_ScreenManage在连接238.61数据库的时候,laravel的log报错说连接不上数据库,貌似首先在尝试使用默认的配置而不是自己写的配置,待查。
Next exception 'Illuminate\Database\QueryException' with message 'SQLSTATE[HY000] [1045] Access denied for user 'forge'@'localhost' (using password: NO) (SQL: select * from `admin_permissions`)' in D:\Dev_PHP\wamp\www\laravels\baier_gxy\Hoozt_ScreenManage\vendor\laravel\framework\src\Illuminate\Database\Connection.php:647(4) Hoozt_ScreenManage的AreaInitSeeder里面的SQL字符串,使用了Heredoc方式声明字符串;
(5) HereDoc方式 定义字符串和数组, 然后当成sql的key-value如何?
(6) 如果删除一个Migration文件,但是又不方便使用migration reset或者 rollback,可以这么做:
(1)删除迁移文件; (2)执行composer dump-autoload; (3) 手工在数据库改动相应的地方;
问题2: 多数据库连接问题