YII2使用Migration数据库 [ 2.0 版本 ]
呲呲呲!邓高鹃听到这个声音把自己手上忙碌的项目停了下来,因为他知道群里有动静了。在第二天刚刚过几分的时间里。不是遇到问题就是有网友回答邓高鹃的问题。果然!以为网友回复了邓高鹃的问题。邓高鹃提到这样一个话题!
<?php
use yii\db\Migration;
class m130524_201442_init extends Migration
{
public function up()
{
$tableOptions = null;
if ($this->db->driverName === 'mysql'){
// http://stackoverflow.com/questions/766809/whats-the-difference-between-utf8-general-ci-and-utf8-unicode-ci
$tableOptions = 'CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE=InnoDB';
}
$this->createTable('{{%user}}',[
'id' => $this->primaryKey(),
'username' => $this->string()->notNull()->unique(),
'auth_key' => $this->string(32)->notNull(),
'password_hash' => $this->string()->notNull(),
'password_reset_token' => $this->string()->unique(),
'email' => $this->string()->notNull()->unique(),
'status' => $this->smallInteger()->notNull()->defaultValue(10),
'created_at' => $this->integer()->notNull(),
'updated_at' => $this->integer()->notNull(),
], $tableOptions);
}
public function down()
{
$this->dropTable('{{%user}}');
}
}
邓高鹃提到!上面的字段好像写的很好,用什么办法执行呢?邓高鹃发完这个话题有忙他的项目,现在有网友回答终于解开了他的谜团。高鹃习惯性的加这个网友为好友。只要是帮助邓高鹃或是被邓高鹃帮助过的人,自己都会主动的加对方为好友,解决的问题都会写一篇文章出来。并且了解他们工作在哪里,老家是哪里的,这就是邓高鹃。
第一步:用cmd进入项目的根目录(因为我这里是在本地的)。注意:不是前台的跟目录也不是后台的根目录,是项目的根目录。我截图出来吧!
F:\WWW\YII2_Chinesize
WWW是我网站的根目录,YII2_Chinesize是我项目的根目录。
第二步:执行
F:\WWW\YII2_Chinesize>./yii migrate
报错:不是内部文件!问网友!网友建议执行
F:\WWW\YII2_Chinesize>./yii.bat migrate
报错:不是内部文件!问网友!网友建议执行
F:\WWW\YII2_Chinesize>yii.bat migrate
报错:可以执行,报的是数据库密码没有配置.
大家千万注意:上面的方法可能面对的不同的环境。网友能执行,邓高鹃那里执行不了的,绝对不是邓高鹃的人品问题,大家一定要相信。
报数据库错我们就配置数据库呗!高鹃屁颠屁颠的打开:
F:\WWW\YII2_Chinesize\common\config\main-local.php
配置了数据库名,用户名,密码。
在到cmd执行:
F:\WWW\YII2_Chinesize>yii.bat migrate
还是报错!提示没有找到数据库!!可是数据库明明配置了。邓高鹃深深呼了口气!心想哪里错了?面对新的事物不知道就要慢慢去悟。
邓高鹃高估了YII2,还是小看了它!原来邓高鹃认为:执行上面的命令,数据库、表都给一次键好。然后邓高鹃还是看了配置项的数据库名,然后自己配置了一个数据库。再次执行!!
F:\WWW\YII2_Chinesize>yii.bat migrate
出现下面的选项:
Apply the above migration? (yes|no) [no]:y
输入:y
按回车!
查看数据库的表!果然有我们的表!
最后邓高鹃还是相信YII2.0的强大,在哪里思考为什么不可以连数据库也键好呢?各种google、各种百度!但是他手上还有项目。半个小时过去了。找不到方法。所以在这里。希望各位网友大神。帮帮这个熬夜写文章的孩子!!!
邓高鹃 北京
最后登录:2017-01-16
在线时长:3小时3分
- 粉丝3
- 金钱295
- 威望30
- 积分625
共 3 条评论
邓高鹃,你不是通过屁颠屁颠打开且配置common/config/main-local.php链接上数据库了吗?Yii就是根据你配置的这个链接连上去的啊。
邓高鹃并没有说链接不上啊!只是当时过程比较坎坷,现在邓高鹃思考的是,我们咱们要自己创建一个数据库呢?直接执行了,直接让程序自己实现不可以吗?咱们应该怎么做!!
@邓高鹃 邓高鹃想的是让程序自己创建库和表,而邓高鹃自己只需要爽爽的执行一下命令是吗?
@飘逸 知我者!飘逸也!可否解乎?
@邓高鹃 邓兄莫急,此事尚有解法。众所周知,Mysql 操作之本质唯那 SQL 语句尔,何况一DDL乎?邓兄且以PHP拼装SQL,再以Yii执行之,则大事可成,霸业可兴也。且夫拼装执行之间,忽觉若无库,则何来配置以成db组件,更无之后种种一切。仿若天清地明,到头不过一捧黄土。
邓高鹃 邓高鹃
Exception 'yii\db\Exception' with message 'SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: NO)'
我再main.php文件中配置好了,配置的不是本地的,是测试服务器的数据库IP和账号密码,是可以访问的,但是使用migrate的./yii migrate --migrationPath=@vendor/filsh/yii2-oauth2-serve./yii migrater/migrations 这个命令时候,访问的时候是本地的,一直报账号密码错误,也找不到migrate的账号密码在哪里配置。 求大神指点。