小编oli*_*ra1的帖子

Laravel迁移事务

在开发中,我在laravel中遇到了很多迁移问题.

我创建了一个迁移.当我完成创建时,在迁移过程中(例如,外键约束)会出现一个小错误,导致"php artisan migrate"失败.他确实告诉我错误的位置,然后迁移到一个不一致的状态,在错误发生之前对数据库进行了所有修改,而不是下一个.

这使得当我修复错误并重新运行migrate时,第一个语句失败,因为已经创建/修改了列/表.然后我知道的唯一解决方案是进入我的数据库并手动"回滚"所有内容,这样做的时间更长.

migrate:rollback尝试回滚以前的迁移,因为当前未成功应用当前迁移.

我还试图将我的所有代码都包装到DB :: transaction()中,但它仍然不起作用.

这有什么解决方案吗?或者我只需要手动回滚东西?



编辑,添加一个示例(不编写Schema构建器代码,只是某种伪代码):
Migration1:

Create Table users (id, name, last_name, email)
Run Code Online (Sandbox Code Playgroud)

Migration1执行正常.几天后我们进行迁移2:

Create Table items (id, user_id references users.id)
Alter Table users make_some_error_here
Run Code Online (Sandbox Code Playgroud)

现在将会发生的事情是,migrate将调用第一个语句,并使用外键向用户创建表项.然后,当他试图应用下一个语句时,它将失败.

如果我们修复了make_some_error_here,我们就无法运行migrate,因为它创建了表"items".我们无法回滚(也不刷新,也不能重置),因为我们无法删除表用户,因为表项中存在外键约束.

然后,继续的唯一方法是转到数据库并手动删除表项,以便以一致的状态迁移.

php migrate laravel

19
推荐指数
3
解决办法
7156
查看次数

在与iOS交互之前,Cordova设备尚未在iOS中启动

我有一个非常奇怪的错误,在用户与操作系统本身交互之前,设备就绪事件不会在iOS设备中触发,这就是按下前面的按钮,通过向下拖动显示通知中心或者拖动设备设置.

一旦用户开始拖动iOS通知中心,就会启动设备.

像这样简单的东西是行不通的:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width" />
  <meta http-equiv="Content-Security-Policy" content="default-src 'self' data:* gap:* tel:* 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'" />

  <title></title>

  <!-- cordova script (this will be a 404 during development) -->
  <script src="cordova.js"></script>
</head>

<body>
  <div id="log"></div>

  <script type="text/javascript">
    var log = document.getElementById("log");
    if(window.cordova){
        log.innerHTML = "with cordova";
        document.addEventListener("deviceready", function onDeviceReady(){
            log.innerHTML = "deviceready";
        }, false);
    }else{
        log.innerHTML = "with browser";
    }
  </script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

cordova content-security-policy cordova-ios

11
推荐指数
1
解决办法
7696
查看次数

在Android wifi热点获取wifi广播地址

我正在开发一个应用程序,它使用wifi在所有与我的应用程序在同一网络中的手机之间广播UDP消息.

我设法从许多具有外部AP的手机发送/接收数据包,这是我的路由器.

但鉴于没有AP的情况,我希望用户能够使用他们手机的Wifi热点功能,这样他们仍然可以使用我的应用程序.因此,其中一部手机将是wifi热点,其他所有手机都将连接到该热点.

我要求用户通过自己的方式连接到wifi.无论是外部AP还是外部AP.然后当我的应用程序启动时,它会检查手机是否连接到wifi网络,调用WifiManager.isWifiEnabled()和NetworkInfo.isConnected().

问题是,如果我在使用热点的手机中调用这些功能,则函数isConnected()将返回false.我无法使用WifiManager.getDhcpInfo()获取广播地址.连接到热点的其他手机完全可以正常工作.但由于WifiManager被禁用,热点手机无法发送任何广播.

所以,我的问题是"有没有办法检查手机目前是否是一个wifi热点?如果有的话,有什么办法可以获得它的广播地址吗?"

android udp broadcast wifi

8
推荐指数
1
解决办法
8428
查看次数