小编die*_*end的帖子

在 mySQL 中进行外部引用时出错(错误 3780)

我正在制作两个表,我希望personOnetableb中的person列引用table上的列a,但由于某种原因它不起作用。

我以下面的代码为例:

create table a(
person varchar(20),
cost varchar(10) not Null
)character set latin1
collate latin1_general_ci;


create table b(
personOne varchar(20),
personTwo varChar(2) not null,
key person_index (personOne),
CONSTRAINT C FOREIGN KEY (personOne) references a(person)
) engine=InnoDB default charset=latin1;
Run Code Online (Sandbox Code Playgroud)

它告诉我一个错误:

错误代码:3780。在外键约束“C”中引用列“personOne”和引用列“person”不兼容。

我试图将引擎设置为 InnoDB,但这没有用。我对这个问题进行了更多研究,但无法弄清楚如何解决它。

mysql sql foreign-keys

7
推荐指数
1
解决办法
1万
查看次数

MySQL PersistenceException,Play中的"Connection is closed"!2.2

我正在尝试Play框架并使用2.2.0版本和Java版本.

我想使用MySQL作为数据库,我已经按照网站上的说明进行操作.我能够运行进化脚本,但我无法将任何内容保存到数据库中.在数据库中创建的表.我[PersistenceException: java.sql.SQLException: Connection is closed!]在尝试调用Ebean.save()方法时得到了,这是在我的控制器中.

我所做的是:

  1. 设置build.sbt并添加插件

    libraryDependencies ++= Seq(
        javaJdbc,
        javaEbean,
        cache,
        "mysql" % "mysql-connector-java" % "5.1.18"
    )
    
    Run Code Online (Sandbox Code Playgroud)
  2. 设置conf/application.conf

    db.default.driver=com.mysql.jdbc.Driver
    db.default.url="jdbc:mysql://localhost:3306/TLC?characterEncoding=UTF-8"
    db.default.user=root
    db.default.pass=secret
    
    Run Code Online (Sandbox Code Playgroud)
  3. Ebean服务器

    ebean.default="models.*"
    
    Run Code Online (Sandbox Code Playgroud)
  4. 创建控制器类包控制器;

    import com.avaje.ebean.Ebean;
    import play.*;
    import play.data.Form;
    import play.mvc.*;
    import models.Bar;
    import views.html.*;
    
    public class Application extends Controller {
    
        public static Result index() {
            return ok(index.render("Your new application is ready."));
        }
    
        public static Result addBar() {
            Bar bar = Form.form(Bar.class).bindFromRequest().get();
            bar.save();
            return redirect(routes.Application.index());
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  5. 创建了一个表单

    <form action="@routes.Application.addBar()" method="post">
        <input name="name"/> …
    Run Code Online (Sandbox Code Playgroud)

java mysql sql playframework ebean

5
推荐指数
1
解决办法
3492
查看次数

Java Hashtable <Object,Someclass>,如果键是字符串?如果字符串相同,它将删除具有相同字符串的所有值

我需要一个基于密钥的Someclass值.键可以是字符串,布尔值或其他对象,这就是我使用Object作为键的原因.但是当对象是一个字符串时,我有一个问题.我有两个对象的字符串,它是等于,但它应该返回不同的值,因为它是一个不同的对象.

我的代码:

Object k = new String("action");
Object l = new String("action");
Hashtable<Object,SomeClass> map = new Hashtable<Object, SomeClass>();

map.put(k,anObject1);
map.put(l,anObject2);

map.remove(k); // it is removing both with k and l.
Run Code Online (Sandbox Code Playgroud)

当我检查两个对象的hashCode()时,它返回相同的值,这最终不是我想要的.

这有什么解决方案吗?我是否需要创建一个覆盖对象的Equals()的新类?但是,仍然是hashCode.:(问题是我需要一个hashCode,为不同的Object返回不同的值.

编辑:我这样做是因为我需要根据字符串的内容执行不同的操作,但操作将因map与键返回的值而不同.

更新:好的,这就是为什么我需要这个奇怪的事情.

我有一个玩家实例和3个陆地实例.所以我希望玩家能够耕种land1,land2,land3.如果玩家想要耕种土地,那个土地会形成一个正在运行的线程,告诉玩家移动到位置X,完成工作action,并wait()通过对象action,当另一个线程按照notify对象线程时action,土地然后自行修改.然后玩家根据对象制作动画action.我正在ArrayList<Position> destination和'ArrayList action`拥有它.也许你可以在这里阅读我的其他问题.

所以我想让动作取消.我通过传递action对象来实现它.我有一个按钮,显示每个动作,每个按钮将取消该动作.我也经过action这里.因此,当我点击按钮时,土地将获得notify.问题是我无法通过ArrayList<Position>删除目的地Action,因为它不知道索引在哪里.我是Java的新手,但是我一直在使用C++,所以我考虑使用Hashtables,因为它的O(1)与C++ O(log n)不同,并且因为我当前代码没有太多变化,所以很方便.

这可以理解吗?

java string hashtable equals hashcode

0
推荐指数
1
解决办法
2243
查看次数

弹性搜索中多重索引的优势是什么?

示例是Logstash格式.他们在elasticsearch中格式化了他们的索引,[logstash-]YYYY.MM.DD每天都会使用一个新的索引.弹性搜索本身将由Kibana使用.它有什么理由被完成吗?有什么好处?

elasticsearch logstash kibana

0
推荐指数
1
解决办法
253
查看次数