Home Php C# Sql C C++ Javascript Python Java Go Android Git Linux Asp.net Django .net Node.js Ios Xcode Cocoa Iphone Mysql Tomcat Mongodb Bash Objective-c Scala Visual-studio Apache Elasticsearch Jar Eclipse Jquery Ruby-on-rails Ruby Rubygems Android-studio Spring Lua Sqlite Emacs Ubuntu Perl Docker Swift Amazon-web-services Svn Html Ajax Xml Java-ee Maven Intellij-idea Rvm Macos Unix Css Ipad Postgresql Css3 Json Windows-server Vue.js Typescript Oracle Hibernate Internet-explorer Github Tensorflow Laravel Symfony Redis Html5 Google-app-engine Nginx Firefox Sqlalchemy Lucene Erlang Flask Vim Solr Webview Facebook Zend-framework Virtualenv Nosql Ide Twitter Safari Flutter Bundle Phonegap Centos Sphinx Actionscript Tornado Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 37

0
votes
answers
48 views
+10

讀寫通用的枚舉休眠

0

我和對象,它包含一個字段讀寫通用的枚舉休眠

@Column(name = "section", nullable = false) 
@Enumerated(EnumType.STRING) 
private Enum section; 

這樣做的原因是因爲對象是在三個不同的項目所使用的每一個將要提供自己的枚舉。看起來寫對象很容易,但我看不懂,並繼續獲得

Caused by: java.lang.IllegalArgumentException: Unknown name value [BLAH] for enum class [java.lang.Enum] 

這當然是非常有意義的。那麼有沒有什麼辦法可以指定每個項目的值將指向哪個枚舉?

+0

這是否意味着你將有三個不同的項目連接到相同的數據庫? –

+0

他們不會連接到相同的數據庫。父類只有對象,子類是連接到在那裏定義的數據庫的類。 – Quillion

沙发
0
1

您應該在每個項目中分別定義每個枚舉屬性。

最好的辦法是從當前類中刪除枚舉屬性,註釋是類@Embeddable而不是@Entity,並在每個項目中,創造出將其嵌入一個實體類,也宣佈了自己的特定項目的枚舉porperty。

你也可以從當前類中刪除枚舉,使抽象類,與@MappedSuperclass取代@Entity,並有每個項目申報它的一個子類,聲明瞭一個具體項目的枚舉。但是,最好總體設計優先於繼承設計。

如果你需要多態,也就是說,你需要能夠泛指由一整塊的每個項目的實體代碼,你可以有每個項目的實體類實現一個接口:

public interface Sectionable<E extends Enum<E>> { 
    E getSection(); 
    void setSection(E value); 
} 

@Entity 
public class Project1Entity 
implements Sectionable<Section1> { 
    @Embedded 
    private ProjectData data = new ProjectData(); 

    @Column(name = "section", nullable = false) 
    @Enumerated(EnumType.STRING) 
    private Section1 section; 

    public ProjectData getData() { 
     return data; 
    } 

    public void setData(ProjectData newData) { 
     Objects.requireNonNull(newData, "Data cannot be null"); 
     this.data = newData; 
    } 

    @Override 
    public Section1 getSection() { 
     return section; 
    } 

    @Override 
    public void setSection(Section1 section) { 
     Objects.requireNonNull(section, "Section cannot be null"); 
     this.section = section; 
    } 
} 
0
votes
answers
27 views
+10

我如何跟蹤一個人去某個地方的時間?

0

我正在爲健身房創建數據庫來跟蹤成員信息。我希望能夠跟蹤人們出行的時間,以便您能夠看到最繁忙的時間。我不知道如何去做這件事。我是否需要爲會員何時出發的信息製作新表格或將其添加到會員表格或健身房表格中?我如何跟蹤一個人去某個地方的時間?

+0

歡迎來到StackOverflow!我們需要更多的背景資料才能在這裏爲您提供幫助。例如,我們需要了解表格的當前結構。要知道某些信息是否應該進入成員表或gyms表,我們需要知道這些表包含哪些數據。 – LauraS

沙发
0
0

我會添加到不同的表。您可以使用user_id創建一個與user表中的用戶ID相同的新表。如果這是一個重點,那麼將訪問與用戶關聯起來會非常容易。

板凳
0
0

有以下的列

  • 創建一個訪問表visitId
  • MEMBERID
  • gymId
  • entryTime
  • EXITTIME

的GymId列可能無法在需要你成員與健身房相關,但取決於您的要求

地板
0
0

用「域」模型來思考。從你的問題看來,你已經有會員和健身房模型。

我建議引入考勤模式。

Attendance 
    - UserId 
    - CheckInDateTime 

這將轉化爲一個名爲「出勤」的新數據庫表與相應的列。

爲了看什麼時候是最忙碌的時間 - 我會在出席表上執行一個「select count」語句,並在check_in_date列中執行「group by」(截斷時間部分)。

關於持續日期時間值的說明。建議將日期時間值存儲在UTC時區中。然後,您可以讓您的應用程序在查看數據時相應地轉換時區。

49
votes
answers
16 views
+10

Is Tornado really non-blocking?

Tornado advertises itself as "a relatively simple, non-blocking web server framework" and was designed to solve the C10k problem. However, looking at their database wrapper, which wraps MySQLdb, I came across the following piece of code:

def _execute(self, cursor, query, parameters):
    try:
        return cursor.execute(query, parameters)
    except OperationalError:
        logging.error("Error connecting to MySQL on %s", self.host)
        self.close()
        raise

As far as I know calls to the MySQLdb, which is built on top of libmysqlclient, are blocking.

Am I right in thinking that a long-running query would render the entire Tornado server unresponsive until it finishes or is there magic on the code?

up vote 15 down vote accepted favorite
沙发
+150
+50

Yes, absent other measures, the server will wait for the query to finish executing. That does not mean Tornado is not a non-blocking web server.

A "non-blocking web server" doesn't block on network I/O (and may have some provision for disk I/O if it does static file serving). That does not mean you get instant, causality-violating instruction execution in your application.

Doing a database call takes time, just like reading files, formatting strings, processing templates, etc. takes time. Doing any of these things in the same thread as the server's main event loop will prevent the loop from moving on until you're done.

感謝您的快速答复。我採用非阻塞來表示當一個請求等待處理時,另一個請求正在處理,因為Web服務器的操作是異步的。但在這種情況下,如果9,999個用戶請求半靜態頁面,而另一個請求長時間運行的查詢頁面,則9,999個用戶將不得不等待一個用戶。 - ipartola 2010年9月3日19:32

因此,如果我想在我的Web應用程序中擁有非阻塞數據庫訪問權限,我將如何通過Tornado實現這一目標? - Chetan 2010年11月15日23:03

你沒有。您可以在它們之間添加更多Tornado實例和負載平衡。您的數據庫查詢不應該花那麼長時間; 否則,這掩蓋了一些其他設計和/或操作問題。 - z8000 2011年4月19日15:49

或者您也可以使用異步接口與更加並發友好的數據庫,如asyncmongo或與MongoDB相關的電機。 - 關於11月8日在19:49的狂熱

我能用某種方式使用python線程實現幾個任務的並行執行嗎? - 改編於2014年1月28日13:28

+330

Tornado is non-blocking if you write non-blocking code on the top if it, eg. using asyncmongo and @tornado.web.asynchronous decorator. Tornado as a framework provides tools for that.

Bret Taylor, one of the original authors, writes:

We experimented with different async DB approaches, but settled on synchronous at FriendFeed because generally if our DB queries were backlogging our requests, our backends couldn't scale to the load anyway. Things that were slow enough were abstracted to separate backend services which we fetched asynchronously via the async HTTP module.

It's true that Tornado doesn't include a non-blocking database layer; in fact the database layer is not integral part of the Tornado framework at all, as opposed to e.g. Django's ORM. Yes, Tornado ships with blocking MySQL wrapper because that's what FriendFeed happened to use, but it's more an external library than core functionality. I'm pretty sure most people are using something else for database access.

+10

Tornado is nonblocking,but just limited to some IO operation like read or write to a socket file.

if you want everything in your code nonblocking,you have to design by yourself.but if your code is computation intensively, then nonblocking is meaningless for you. this situation you might use multi-process.

remember one thing nonblocking just mean the server send/receive date won’t blocking. If you can’t make your code nonblocking,then your whole application is someway blocking.

0

Yes; this is not a fully non-blocking web server at all.

A non-blocking webserver doesn't block, using non-blocking APIs for file I/O, database access, and so on, to ensure that one request that has to wait for something to finish doesn't prevent other requests from being processed. This applies to everything that might block the server, including database access.

There's nothing as silly as "causality violation" in having non-blocking database access; it makes perfect sense to run a non-blocking query related to one request, and to process other requests while that's still running. In practice, this will usually mean making multiple connections to the database backend.

Note that if you're trying to run ten thousand concurrent requests, be careful: most database backends can't cope with this. If you have more than a few dozen database requests to run in parallel, you probably want something like a connection pooler, to allow the web server to make lots of database connections without swamping the backend. This will cause requests to block, waiting in a queue to get database access, but doing it this way means it's not blocking the whole server--just the requests that need the database.

你正在解決一些你不完全理解的問題。Tornado網絡服務器是非阻塞的。如果你選擇在MySQLdb周圍使用Tornado框架的可選瘦包裝器,你可能會損害非阻塞網絡服務器的好處,但這絕對沒有說明數據庫模塊不屬於它的網絡服務器本身。 - 尼古拉斯奈特2010年9月4日1:12

@Nicholas Knight:不,我完全理解什麼是“非阻塞的Web服務器框架”(重新閱讀OP)意味著什麼; 顯然,你沒有。 - 格倫梅納德2010年9月4日凌晨2點

0
votes
answers
13 views
+10

如何在PHP和MySQL中爲不同的登錄用戶分配不同範圍的聯繫人

-1

我正在嘗試在php和mysql中創建一個簡單的CRM。但卡住了一部分。 我有一張可以同時登錄的用戶表,並且一次訪問聯繫人表。但是我想給他們分配不同的數據範圍。例如:如果「」,「」 &「ç」的所有日誌,在相同的時間和訪問前端表「聯繫人」,我想
」至顯示數據來自1-500
'B' - 501-1000。 &
ç」 - 1001-1500如何在PHP和MySQL中爲不同的登錄用戶分配不同範圍的聯繫人

如果有人能幫助我在正確的方向如何做到這一點,我會很感激。

+0

這是一個非常普遍的問題......你應該嘗試一些事情,然後回來更具體的問題。一般來說,在這裏不要求別人解決一般的編程問題。你需要先嚐試自己解決它。 – Serge

+0

我用COUNT和LIMIT嘗試了不同的方法,並加入了表格但沒有運氣。我只想要一些指導繼續。如果我們迷路了,我們一般不會問路嗎? – Tarun

+0

必須知道更多詳細信息,例如您如何確定每個人獲得500是否因爲有1500/3個登錄人員?你只是按照字母順序分配它們,這些東西必須在任何人試圖幫助你之前定義。 –

沙发
0
0

終於找出來了。

我在默認值爲'0'的聯繫人表中創建了名爲'assigned_to'的三個輸入字段和一個列。 字段是 -

  1. 爲僱員ID選擇字段
  2. 分鐘(輸入[類型=文本])範圍字段
  3. 最大(輸入[類型=文本])範圍字段

我使用查詢填充了MIN範圍和MAX範圍字段

select MIN(id) as minid from contacts_table WHERE assigned_to=0 
select MAX(id) as maxid from contacts_table WHERE assigned_to=0 

然後,在表單發佈後,我插入了employee_id在聯繫人表的assigned_to列中。

<?php if (isset($_POST['assign'])) { 
     $sel_emp = $_POST['sel_emp']; 
     $min_range = $_POST['min_range']; 
     $max_range = $_POST['max_range']; 
     $sqli = "UPDATE contacts_table SET `assigned_to`='$sel_emp' WHERE `assigned_to`='0' AND id BETWEEN '$min_range' AND '$max_range'"; 
     if (mysqli_query($conn, $sqli)) { 
      ?> 
      <script> 
       $("#msg").html("Assigned"); 
       $("#msg").css('color', 'green'); 
      </script> 
      <?php 
     } else { 
      echo mysqli_error($conn); 
     } 
     } ?> 

因此,基本上,執行上述主查詢所述操作是

UPDATE leads SET `assigned_to`='251' WHERE `assigned_to`='0' AND id BETWEEN '1' AND '500' 

此更新assigned_to值與EMPLOYEE_ID是251

如果任何人都能夠提供更好的解決方案。我會非常感謝。

0
votes
answers
30 views
+10

MySQL之前刪除觸發器雙連接和條件

0

你好,同事。MySQL之前刪除觸發器雙連接和條件

我有樣的一個問題試圖刪除觸發器有多個連接和條件之前實施

我有用戶表,組和連接表,使它成爲許多。

觸發的感覺是允許刪除沒有學生的組,並禁止其他人。

我對現在的代碼是:

DELIMITER // 

CREATE TRIGGER 
    groups_before_delete BEFORE DELETE ON groups 
FOR EACH ROW 
BEGIN 

    DECLARE students int; 

    SET students = (SELECT 
    count(title) 
    FROM 
    users u 
    INNER JOIN student_to_group stg ON (u.id = stg.student_id) 
    INNER JOIN groups g ON (stg.group_id = g.id) 
    GROUP BY 
    group_id 
    HAVING 
    group_id = OLD.id); 

    IF students = 0 THEN DELETE FROM groups where id = OLD.id; 
    END IF; 

END;// 

DELIMITER ; 

它通過語法檢查,但不起作用。有什麼建議嗎?

在此先感謝。

+0

更好地用'ON DELETE RESTRICT'定義一個外鍵。 https://dev.mysql.com/doc/refman/5.7/en/create-table-foreign-keys.html –

+0

是的,我知道這種方式。外鍵是另一種方式,問題是如何用觸發器來實現。不管怎麼說,還是要謝謝你。 – Bandydan

沙发
0
1

我不知道你爲什麼不想用外鍵和ON DELETE RESTRICT更好的解決方案。

但是 - 要停止使用觸發器進行刪除,您需要在任何學生與該組關聯時發出錯誤。並且不需要任何連接。您需要閱讀的唯一表格是student_to_group。你也不需要統計組中的所有學生。你只需要知道是否有學生與這個組相關聯,最好用EXISTS完成。

要引發錯誤,您可以使用SIGNAL命令。

DELIMITER // 

CREATE TRIGGER 
    groups_before_delete BEFORE DELETE ON groups 
FOR EACH ROW 
BEGIN 

    IF EXISTS (SELECT * FROM student_to_group stg WHERE stg.group_id = OLD.id) THEN 
     SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Cannot delete a group which has students'; 
    END IF; 

END// 

DELIMITER ; 
+0

完美的作品,謝謝。非常好的優化決策。 – Bandydan

1530
votes
answers
8 views
+10

How to temporarily disable a foreign key constraint in MySQL?

Is it possible to temporarily disable constraints in MySQL?

I have two Django models, each with a ForeignKey to the other one. Deleting instances of a model returns an error because of the ForeignKey constraint:

cursor.execute("DELETE FROM myapp_item WHERE n = %s", n)
transaction.commit_unless_managed()  #a foreign key constraint fails here

cursor.execute("DELETE FROM myapp_style WHERE n = %s", n)
transaction.commit_unless_managed()

Is it possible to temporarily disable constraints and delete anyway?

up vote 1315 down vote accepted favorite
沙发
+13150
+50

Try DISABLE KEYS or

SET FOREIGN_KEY_CHECKS=0;

make sure to

SET FOREIGN_KEY_CHECKS=1;

after.

這是為mysql整體設置還是僅為該會話設置的東西? - 2013年10月31日21:41

我相信這是每次會議。 - 安德魯坎貝爾2013年11月4日15:02

stackoverflow.com/questions/8538636 / ... - Andrew Campbell 2013年11月4日15:04

serverfault.com/questions/291100 / ...,另請注意,您不能禁用Innodb的密鑰 - Pacerier 2015年2月24日4:19

我有問題二十次使用這個答案。 - 傑克西爾維斯特於18年9月19日17:14

+1230

To turn off foreign key constraint globally, do the following:

SET GLOBAL FOREIGN_KEY_CHECKS=0;

and remember to set it back when you are done

SET GLOBAL FOREIGN_KEY_CHECKS=1;

WARNING: You should only do this when you are doing single user mode maintenance. As it might resulted in data inconsistency. For example, it will be very helpful when you are uploading large amount of data using a mysqldump output.

這是我需要知道的,所以這不是很好的練習,但這個傢伙的答案應該是得分更高...... - ftrotter 12年12月12日在22:53

在嘗試“最佳答案”後,這對我有用。也許可以添加對差異的解釋。 - hexnet 2015年8月27日12:37

@hexnet區別在於只有SET FOREIGN_KEY_CHECKS只更改當前連接的值,而SET GLOBAL ..更改所有連接的值,包括將來的連接。如果你只是在一個窗口中執行SET FOREIGN ..然後嘗試在不同的窗口中應用該語句(通過不同的連接),那裡的值沒有改變。對於GLOBAL,同一個變量對兩個連接都具有相同的值。 - MatsLindh 2016年4月26日14:03

回放更大的轉儲(6+ GB)<3 - 2016年9月15日15:11時,唯一可以幫助我的東西

這對我不起作用。當我嘗試時,我看到:ERROR 1228(HY000):變量'foreign_key_checks'是一個SESSION變量,不能與SET GLOBAL一起使用 - Mike B 12年9月9日0:25

+440

I normally only disable foreign key constraints when I want to truncate a table, and since I keep coming back to this answer this is for future me:

SET FOREIGN_KEY_CHECKS=0;
TRUNCATE TABLE table;
SET FOREIGN_KEY_CHECKS=1;
+250

Instead of disabling your constraint, permanently modify it to ON DELETE SET NULL. That will accomplish a similar thing and you wouldn't have to turn key checking on and off. Like so:

ALTER TABLE tablename1 DROP FOREIGN KEY fk_name1; //get rid of current constraints
ALTER TABLE tablename2 DROP FOREIGN KEY fk_name2;

ALTER TABLE tablename1 
  ADD FOREIGN KEY (table2_id) 
        REFERENCES table2(id)
        ON DELETE SET NULL  //add back constraint

ALTER TABLE tablename2 
  ADD FOREIGN KEY (table1_id) 
        REFERENCES table1(id)
        ON DELETE SET NULL //add back other constraint

Have a read of this (http://dev.mysql.com/doc/refman/5.5/en/alter-table.html) and this (http://dev.mysql.com/doc/refman/5.5/en/create-table-foreign-keys.html).

注意更改表可能需要很長時間,最好將FOREIGN_KEY_CHECKS的服務器全局設置為0,並在完成臟工作後將其放回原處。除此之外它可能會鎖定寫表。 - Aki 1月13日在14:57

改變遠程列類型時不會破壞引用嗎?(似乎我的客戶端將修改後的臨時表重命名為原始表名。) - Cees Timmerman 2016年3月3日在10:37

+110

To turn off foreign key constraint globally:

SET GLOBAL FOREIGN_KEY_CHECKS = 0;

and for active foreign key constraint

SET GLOBAL FOREIGN_KEY_CHECKS = 1;
+80

A very simple solution with phpmyadmin :

  • In your table, go to SQL tab
  • After you edit the SQL command that you want to run, there is a check box next to GO, named 'Enable foreign key checks' .
  • Uncheck this check box and run your SQL . It will be automatically re-checked after executing.

謝謝!確實解決方案SET FOREIGN_KEY_CHECKS = 0; ..... SET FOREIGN_KEY_CHECKS = 1; 在PHPMyAdmin中沒有為我工作,因為我忘了取消選中“啟用外鍵檢查”複選框。在PHPMyAdmin中,您可以跳過這些SET命令,只需取消選中該複選框即可。 - - 1月18日1月7日10:31

+30

If the key field is nullable, then you can also set the value to null before attempting to delete it:

cursor.execute("UPDATE myapp_item SET myapp_style_id = NULL WHERE n = %s", n)
transaction.commit_unless_managed() 

cursor.execute("UPDATE myapp_style SET myapp_item_id = NULL WHERE n = %s", n)
transaction.commit_unless_managed()

cursor.execute("DELETE FROM myapp_item WHERE n = %s", n)
transaction.commit_unless_managed()

cursor.execute("DELETE FROM myapp_style WHERE n = %s", n)
transaction.commit_unless_managed()
+10

For me just SET FOREIGN_KEY_CHECKS=0; wasn't enough. I was still having a com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException.

I had to add ALTER TABLE myTable DISABLE KEYS;.

So:

SET FOREIGN_KEY_CHECKS=0;
ALTER TABLE myTable DISABLE KEYS;
DELETE FROM myTable;
ALTER TABLE myTable ENABLE KEYS;
SET FOREIGN_KEY_CHECKS=1;

僅供參考,mySQL 5.7拋出警告,運行DISABLE KEYS命令時InnoDB引擎沒有此選項。 - jDub9 '18年12月20日13:56

0

In phpMyAdmin you can select multiple rows then click the delete action. You'll enter a screen which lists the delete queries, you can uncheck the Foreign key check, and click on Yes to execute them.

This will enable you to delete rows even if there is a ON DELETE restriction constrain.

@DanAllen:我的回答有點寬泛,因為你可以通過PDO的quote()函數來避免這個特定的錯誤 - 但是準備好的語句通常是一種更安全,更合適的方法來避免注入。當然,如果你將未轉義的變量直接連接到SQL中,那麼無論你以後使用什麼方法,你都很容易受到注入。 - eggyal 2017年4月6日7:07

@eggyall:我們的系統依賴於上面的第二個安全示例。有錯誤,其中省略了mysql_real_escape_string。修復那些處於緊急狀態的人似乎是謹慎的道路,希望我們在修正之前不會受到傷害。我的理由是轉換為準備好的陳述將是一個更長的過程,必須要追求。準備語句的原因是否更安全,錯誤不會造成漏洞?換句話說,正確實現上面的第二個例子和準備好的語句一樣安全嗎? - DanAllen於2017年4月6日12:19

0

It's not a good idea to set a foreign key constraint to 0, because if you do, your database would not ensure it is not violating referential integrity. This could lead to inaccurate, misleading, or incomplete data.

You make a foreign key for a reason: because all the values in the child column shall be the same as a value in the parent column. If there are no foreign key constraints, a child row can have a value that is not in the parent row, which would lead to inaccurate data.

For instance, let's say you have a website for students to login and every student must register for an account as a user. You have one table for user ids, with user id as a primary key; and another table for student accounts, with student id as a column. Since every student must have a user id, it would make sense to make the student id from the student accounts table a foreign key that references the primary key user id in the user ids table. If there are no foreign key checks, a student could end up having a student id and no user id, which means a student can get an account without being a user, which is wrong.

Imagine if it happens to a large amount of data. That's why you need the foreign key check.

It's best to figure out what is causing the error. Most likely, you are trying to delete from a parent row without deleting from a child row. Try deleting from the child row before deleting from the parent row.

沒錯,總會有一個權衡。 - Pacerier 2015年2月23日15:44

沒人說要永遠這樣運行它。您關閉約束,批量加載某些數據,然後重新打開它。沒什麼大不了的,人們總是這樣做。 - bwawok 2015年11月17日17:39

對於批量進口是必要的,至少對於性能來說,它是非常普遍的。有時您只需要恢復數據,然後您可以進行檢查。 - Firas Abd Alrahman於2017年2月14日23:43

這不是問題的答案。 - Koray Tugay於2017年9月5日10:10

請注意,他的問題是暫時如何做到這一點。執行某些維護和數據導入時需要這樣做。需要注意的是,導入腳本會對數據完整性負責。然後,稍後當重新打開索引和約束時,db將告訴您某些內容是否已損壞。 - mcstar 17年11月13日20:38

+1,但通配符是LIKE子句,而不是簡單的相等。 - 多蘿蔔4月21日晚上8點08分

通過什麼方法,您認為簡單替換比使用預準備語句更有效?(準備好的語句總能正常工作,庫可以在發生攻擊時快速糾正,不會暴露人為錯誤[例如錯誤輸入完整的替換字符串],並且如果重複使用該語句,則具有顯著的性能優勢。) - MatBailie 2011年4月21日8:28

@Slava:您實際上只是將用戶名和密碼限制為單詞字符。大多數對安全性一無所知的人會認為這是一個壞主意,因為它會大大縮小搜索空間。當然,他們也認為將明文密碼存儲在數據庫中是一個壞主意,但我們不需要復雜化問題。:) - cHao 2013年1月27日1:26

@cHao,我的建議僅涉及登錄。顯然你不需要過濾密碼,對不起,我的回答中沒有明確說明。但實際上這可能是個好主意。使用“石頭無知的樹空間”而不是難以記住和類型“a4üua3!@v”ä90; 8f“將更加強硬。甚至使用字典,比如3000字來幫助你,知道你恰好使用了4個單詞 - 這仍然是大約3.3 * 10 ^ 12個組合。:) - Slava 2013年1月28日9:26

@Slava:我以前見過這個主意; 見xkcd.com/936。問題是,數學並不能完全證明這一點。您的示例17-char密碼將具有96 ^ 17種可能性,如果您忘記了變音符號並限制自己使用可打印的ASCII。這大概是4.5x10 ^ 33。我們正在談論蠻力的數十億萬億次的工作。即使是8個字符的ASCII密碼也會有7.2x10 ^ 15的可能性--3000倍。 - cHao 13年1月28日13:21

0
votes
answers
11 views
+10

PHP MySQL準備好的語句不返回結果

-3

我的準備好的語句是通過PHP發送到我的數據庫的。有人能告訴我爲什麼下面的聲明不會返回結果嗎?我只會描述我想要它做什麼,它做什麼和代碼。PHP MySQL準備好的語句不返回結果

我有數據通過表單準備好插入到我的表中,但我需要從另一個表中插入值。

我習慣於以下SELECT語句來獲取輸入數據的基礎。此查詢適用於MySQL Workbench並返回正確的結果,但它不適用於我的PHP表單。當我回顯$時結果爲空。

代碼:

 $=$_POST['']; 
     $=$_POST['']; 

     $db = createConnection(); 

     $sql="select from where =? AND =?;"; 
     $stmt=$db->prepare($sql); 
     $stmt->bind_param("ss",$,$); 
     $stmt->execute(); 
     $stmt->store_result(); 
     $stmt->bind_result($); 
     echo ": $"; //returns null value 

有沒有被報告錯誤,所以我不知道從哪裏下一個調查,因爲我已經看過了預處理語句的例子。

另外,我有一個方面的問題。爲了插入到表中,獲取值的方法是不正確的做法嗎?

如果需要更多信息,請讓我知道。先謝謝你。

後必須執行的bind_result取
+0

*「有被沒有錯誤報告」 * - 我看不出有任何錯誤處理任何責任。 –

沙发
0
1

while ($stmt->fetch()) { 
    echo "tripNo: $tripNo<br />"; 
} 
0
votes
answers
30 views
+10

插入HTML到MySQL數據庫顯示類型錯誤

-3

我正在開發一個Web應用程序使用Flask。在某些時候,我必須插入某些HTML腳本到MySQL數據庫:插入HTML到MySQL數據庫顯示類型錯誤

<h3>Welcome!</h3> 
<p>Some text</p> 

當我將其插入到數據庫中(當它被瓶中的「render_template」函數返回):



<h3>Welcome!</h3>



<p>Some text</p> 

我得到以下錯誤:

TypeError: ProgrammingError(1064, "You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '\\\\n\\n<h3>Welcome!</h3>\\n\\n\\n\\n<p>Some text' at line 1") is not JSON serializable

我第一次不明白什麼JSON序列化「的意思,我想知道我做錯了。我已經嘗試脫線( ),但它仍然顯示相同的錯誤。爲什麼?我很感謝你能提供的任何答案。

+0

where is SQL query? – furas

沙发
0
0

編寫HTML時數據庫通常用於甲解決方案:

1)簡單地轉換數據庫字段類型成團塊這樣它將接受二進制數據,然後編碼HTML爲二進制(下面例子)。 2)將數據庫字段保留爲文本字段,但base64對數據進行編碼,以便數據庫不會抱怨非法字符。

# Example for case 1. 
# Note that you need to make sure the database field is a blob: 
html = '<h3>Welcome!</h3>
<p>Some text</p>' 
bin = html.encode() 
dbhandle.execute('INSERT INTO script (various fields, binhtml) VALUES (..., bin)') 
# When you read back the data, remember to decode. 
dbhandle.execute('SELECT binhtml FROM script WHERE...') 
resultset = dbhandle.fetchall() 
htmlresult = resultset.decode() 

# Example for case 2. 
# Database field can be a text/varchar type because base64 ensures it will work. 
import base64 
html = '<h3>Welcome!</h3>
<p>Some text</p>' 
# Convert HTML into base64 encoded *text* so it can be stored in text field. 
encoded = base64.b64decode(html.encode()).decode() 
# Do the database INSERT. 
... 
# Retrieve the stored text from the database and convert back to HTML 
dbhandle.execute('SELECT encodedhtml FROM script WHERE...') 
resultset = dbhandle.fetchall() 
htmlresult = base64.b64decode(resultset).decode() 
0
votes
answers
12 views
+10

錯誤:PLS-00410:RECORD,TABLE或參數列表中的重複字段不允許

0

我遇到了存儲過程的麻煩。我不斷收到此錯誤: 錯誤:PL/SQL:編制單位分析終止 錯誤:PLS-00410:重複的記錄,表或參數列表字段不允許錯誤:PLS-00410:RECORD,TABLE或參數列表中的重複字段不允許

這就是我試圖運行:

create or replace procedure service_order_proc 
(
SERVICE_ORDER_ID NUMBER, 
CUST_ID NUMBER, 
EMP_ID NUMBER, 
SERVICE_DATE DATE, 
SERVICE_ORDER_STATUS_ID NUMBER, 
SERVICE_ORDER_TYPE_ID NUMBER, 
SERVICE_TOTAL NUMBER, 

EMP_ID NUMBER, 
FNAME VARCHAR2, 
LNAME VARCHAR2, 
PNUMBER VARCHAR2, 
EMP_STATUS_ID NUMBER, 
EMP_GROUP_ID NUMBER 

) 

AS BEGIN 

insert into service_order values (SERVICE_ORDER_ID, CUST_ID, EMP_ID, SERVICE_DATE, 
SERVICE_ORDER_STATUS_ID, SERVICE_ORDER_TYPE_ID, SERVICE_TOTAL); 

insert into employee values (EMP_ID, FNAME, LNAME, PNUMBER, 
EMP_STATUS_ID, EMP_GROUP_ID); 

end; 
沙发
0
1

你有EMP_ID列出兩次作爲過程的參數

0
votes
answers
14 views
+10

如何從兩個日期中選擇小時差

-2

請問我如何計算在我的數據庫中使用mysqli在php中的兩個給定日期的小時數?如何從兩個日期中選擇小時差

E.g的2017年11月25日10:23和20:33十二分之二千零十七

+1

可能的複製MYSQL DATEDIFF](https://stackoverflow.com/questions/11579946/only-show-hours-in-mysql-datediff) –

沙发
0
0

使用TIMEDIFF小時之間.amount。它顯示小時,分鐘和秒2個DATETIME值之間的差異:

PS,你的結束日期沒有一個日子,所以我用的[只顯示時間在1

SELECT TIMEDIFF('2017-12-01 20:33:00','2017-11-25 10:23:00')