对于我近一两个礼拜来搭建环境所踩过的坑做一个综合的记录,也许对后人有用:
首先说明一下我要做的事情:
原来的项目使用laravel框架在公司内部的git服务器上,我需要在本地整理好环境,进行开发。说起来很简单的一件事情,但是发生了很多的问题。
1.首先是将项目源文件拉下来
我在这里犯得错误是,直接将别人的文件夹包括.git文件夹都拷贝过来了(主要是因为太大了,clone太慢),但是就出现了问题。这个毕竟是别人的git库,我没办法与服务器进行push和pull操作,总是报错,报各种各样的问题。具体问题忘记了,但是言而总之,正确的操作还是应该是git clone,这样git会帮你把本地文件夹和远程服务端仓库关联起来,以后就可以正常的进行pull和push。
2.数据库的迁移
先使用laravel框架中php artisan migrage命令,新建数据库表。然后从服务器数据库中导出数据库sql文件,再在本地导入。也是很简单的事情。
遇到的问题:
首先,由于操作的失误,我希望将Mysql中的数据库删除。首先,我使用drop database databaseName命令,反应超级慢,半天没反应。等了很久之后,退出了Mysql再重新登录,显示数据库还在,但是里面的表已经都没有了。此时有可能会有问题,需要去数据库的data文件夹看看,如果有残余文件也一并删除。
还有一个错误行为,我直接删除了数据库中的data数据,然后重新新建,再调用php artisan migrate命令的时候,总是报表已经存在,生成表的命令无法执行。在执行一次drop database操作后,php artisan migrate命令即可正常使用。
在正常生成表后,使用sql文件导入数据库记录。报错:外键约束的错误,需要处理,先暂时将数据库的外键约束去掉,再进行导入(在这里发生小插曲,提示某个表的字段不存在,显然这个应该是migrate中未写出来的,数据库中有的,小错误调整一下即可)。
去掉外键约束:set @@global.foreign_key_checks=0(恢复改为1即可),显示外键约束:select @@foreign_key_checks;
最后还有一个问题,表在导出时,在表的最后部分有约束条件也导出了,但是在导入的时候提示重复的约束条件。猜想是migrate操作的时候已经建立了这样的约束条件,所以再次导入约束条件会报约束条件名重复的问题。验证:我是将本地数据库导出看的时候,发现最下面果然已经存在约束调整了,充分说明了这一点。
3.最后还有一个问题:当我昨天导入的数据库都正常能显示,能看,只是没有用web项目来看。但是今天再打开数据库提示各种数据表都找不到,明显show tables;表都是存在的。最后参考网上的做法,修改数据库大小写不敏感(原来是0不敏感改成了1,再测试数据库可以正常使用了),后来将1再改回0还是可以正常使用。那就不知道什么原因了,各种抽风,随便吧!反正总算是环境搭通了。