在drupal系統的用戶創建中, uid是從1開始遞升,
現在希望能事先保留幾十個最小的uid作為日後網站管理人使用, 如何能夠達成這樣的要求?
我嘗試過通過users表創建一些"空/虛擬"的用戶, 如
insert into users (uid, name, pass, mail, created, access, data) value(5, 5, 'd91713298027407d', '5@gmail.com', UNIX_TIMESTAMP(now()), UNIX_TIMESTAMP(now()), 'a:0:{}');
但是這些與drupal的用戶創建系統充到.
Re: 如何能預先保留一些用戶uid
5.x 是用 db_next_id('{users}_uid');
你到資料庫內找 sequence 這個 table
搜尋第一欄是 users_uid 的第二欄 就是目前已經產生的 uid 了
直接改變那個數值
下次遇到使用者新增呼叫 db_next_id('{users}_uid'); 的時候
就會從你改過的數值 +1 當做新的 uid 了
6.x 取消 db_next_id 改用 db_last_insert_id
sequence 這個 table 也被取消了
這部份我就不清楚要怎麼修改了
Re: 如何能預先保留一些用戶uid
補充一下
可以先進行call function user_save,然後 disable user的狀態,可能是比較好的作法
更簡單的方式是用simpletest建立測試帳戶,設定人數他就會幫你建好,然後把資料表的status改掉就行了
from open mind to open source~
--
Re: 如何能預先保留一些用戶uid
很欽佩, 你對drupal的熟悉程度和把握.
我是用的5.x. 全部的已經產生最大id都在sequence 這個 table裏啊, 好了, 謝謝.
6.x有許多模組還沒有出來, 特別是imagefield連alpha版都沒出來, 也不知會不會出了.
關于版本的采用也有值得探討的, drupal好像版本支持也只有兩年, 第一年裏可能會遇到模組不齊全. 讓每個版本的使用時間會短了許多.
Re: 如何能預先保留一些用戶uid
因為開發上的需求
大部分都得自己寫模組
一開始什麼都不清楚
只能邊查 Pro Drupal Development 邊寫
目前開發的時候主要還是選擇 5.x
有缺少的功能還可以自己寫模組來補上
6.x 的變動目前並不是了解的很透徹
單就drupal 6 那本書看到的部份 已經算是非常大個改動了
menu 建構的格式不同
多了模組可以用的 hook_theme
表單的 _valid 和 _submit 也有細微的變動
原本的 $form_values 參數變成 &$form_state
所以在 _valid 要傳資料到 _submit 不再需要使用 form_set_value
直接修改 $form_state 內的資料就行了
然後因為送出後回到原表單 一樣可以用 &$form_state 取值
所以 multistep form 也取消了
在 _submit 內
也不使用 return path 來決定導向的頁面
直接設定 $form_state['redirect'] 這個變數的值就行了
另外目前在查 API 的時候
看到不少只到 5.x 的函式
或是只有 6.x 以上的函式
例如上面提到的 db_next_id 和 db_last_insert_id
不但函式名不同 使用方式也有差異 並不能完全替代
db_last_insert_id($table, $field) 必須傳入 $table, $field 這兩個參數
而且似乎會去檢查db內對應的 table 與 field
所以可能 db 內必須要有實際的 table 與 field 才能使用
不像 db_next_id 隨便自定一個名稱也可以使用 這是安全性上的考量
其他可能還有許多變動的函式
目前還沒有實際撰寫 6.x 的模組
到時候遇到的問題可能會更多吧
Re: 如何能預先保留一些用戶uid
看了你的描述體會到了6.x 結構的很大改變, 前面我也大概看了一下database的table有許多不同和新table, 但是沒有時間去深入. 從我的問題和你的講解和解決辦法我感覺到了你對 drupal的整體結構的熟悉, 讓我很羨慕, 呵呵.
另外我想知道的你用 6.x 是對過去用5.x版的同一個項目(project)的升級還是要開始全新的項目. 對5.x版的項目完成後是要如何去維護. 在網上看到的統計現在還是5.x版用的是多數, 但是很好奇人們在用新版和依舊用舊版的考量.
Re:
其實是有好幾個 drupal 網站建置的專案
之前建置好的 5.x 網站 目前還沒有升級的計畫
之後預計要開發的 應該還是以 5.x 為主
之前有一個架簡單的手冊+討論區的站的專案
就是想說用 6.x 試試看
結果最後卡在權限相關的模組 6.x 的還在開發中 但是有 5.x 的版本
最後只好改回使用 5.x 來架設
目前 6.x 的模組雖然有多了一些 5.x 沒有的新功能的新模組
但是很多 5.x 已經開發完成的模組
6.x 的版本都還沒有
我想
大概起碼要等到 views 2 + cck 都釋出正式版
改用 6.x 的才會比較多吧
6.x 的部份
目前手上還沒有實際需要使用 6.x 來開發模組的專案
只是自己找空閒時間翻翻 learning drupal 6 module development 研究一下而已
不過這本書感覺寫的很淺 不像 pro drupal development 比較完整與深入
真希望會出 6.x 的版本的 pro drupal development
Re: 如何能預先保留一些用戶uid
我也是感覺contributed module的版本滯後使用戶不能選用新的drupal版本, 現在有許多功能還是要依賴第三方的模組. 不知drupal是否有在未來將views 和 cck 這樣的關鍵模組加入的計劃. 只是希望能盡快的實現.
現在 drupal 的開發步驟與4.x時是有很大的不同了. 7.x版明年初就又會出來, 不像是4.x 版一共持續了5年. 這樣第三方的模組和drupal版本的差感覺的更加突出.
這個月有一本 Pro Drupal Development, Second Edition 要出來, 是與 6.x 相關的, 可能是比較適合你的要求和程度的.
Re: 如何能預先保留一些用戶uid
Drupal 6 是會去抓 users 的 AUTO_INCREMENT, 所以把 AUTO_INCREMENT 的值加大應該就可以了. 只是很怪的, 我用 ALTER TABLE dr_users SET AUTO_INCREMENT = 3 指令, 執行是成功的, 但是 AUTO_INCREMENT 的值還是沒變.
但是詭異的是, 我把 users 整個 table 給 drop 再重建, 再用 ALTER TABLE dr_users SET AUTO_INCREMENT = 3 指令就可以了.
Re: 如何能預先保留一些用戶uid
可能是我那個安裝的 drupal 有問題吧, 我拿另一個剛從 drupal 5 升級到 6 或是直接新裝的 d6, 都可以改 AUTO_INCREMENT. 另外, phpMyAdmin 的 operations 也可以直接修改 AUTO_INCREMENT 的值.