我接管了一個在Laravel 4中編寫的項目。有兩個系統(dev和production)基本上應該這樣做。如何在laravel 4/cartalyst sentry中調試插入異常
當我嘗試註冊一個用戶(所使用的包裝是cartalyst/sentry)時,它對生產有效。在開發環境中,它失敗了,因爲有些列定義爲非空,並且代碼中沒有設置它的語句。所以我明白爲什麼它會失敗,我不明白爲什麼它在另一臺機器上工作,以及我可以在dev上做些什麼調整來使它工作。不改變數據庫列(我想在進行這種更改之前瞭解系統)。
例外:
SQLSTATE[HY000]: General error: 1364 Field 'auto_token' doesn't have a default value
(SQL: insert into `users` (`first_name`, `last_name`, `display_name`, `email`,
`password`, `updated_at`, `created_at`) values (?, ?, ?, ?, ?, ?, ?)) (Bindings: array ...
代碼以reactor進行註冊一個新用戶:
$user = Sentry::register(array(
'first_name' => Input::get('first_name'),
'last_name' => Input::get('last_name'),
'display_name'=> Input::get('display_name'),
'email' => Input::get('email'),
'password' => Input::get('password'),
));
DB-架構:
id (unsigned int, not null)
first_name (varchar, not null)
last_name (varchar, not null)
display_name (varchar, not null)
email (varchar, not null)
password (varchar, not null)
auto_token (varchar, not null)
... more columns like auto_token
PROD:MySQ大號42年5月5日 - PHP 5.4.30 - 在Linux上
開發運行:MySQL的5.6.21 - PHP 5.4.30 - 在Windows
我知道,查詢不應該擺在首位成功運行運行,數據庫模式通常是有缺陷的。我想知道是什麼原因造成的,以及如何解決這個問題。
我被困住的地方是爲什麼在一個系統上工作,而另一個不是。任何人都知道方向?
太棒了,1個答案 - 正好碰到它。謝謝,有時我想知道這個星球上有人可以知道這些東西... – hogan
不客氣。沒有什麼不可思議的,因爲我曾經多次遇到同樣的問題:)現在,當他們遇到類似問題時,您也可以幫助其他人。 –