Espaço de Alocação para Campos MySQL

Primeiro eu crio o modelo na minha aplicação, depois o Entity Framework gera o SQL para a criação da tabela. A primeira declaração gera uma coluna com o tipo varchar(20), já a segunda gera como longtext.

Exemplo

[StringLength(20)]
public string Codigo { get; set; }

public string CodigoDois { get; set; }

Dúvidas

Existe alguma diferença entre essas duas declarações(falando sobre alocação de espaço no banco de dados)?
Mesmo se elas armazenarem o mesmo valor como “teste” que tem 6 caracteres?

Se eu sei que um campo possui uma variação do seu comprimento, vamos dizer que entre 10-15 caracteres, seria a melhor decisão limitar para o comprimento máximo ou deixar “sem limite”(falando sobre alocação de espaço no banco de dados)?

MySQL having variable in view

I have a query that I want to save as a view because it will be used on a different system that we don’t have access to. The query basically gets running balances on debit and credit columns from a table.

The query works fine,here is the query

SELECT id,deb_id,trans_date,trans_ref,dr,cr,
    @bal := @bal + (dr -cr) AS `Balance`
FROM debtor_transactions a , (SELECT @bal := 0) var    
ORDER BY a.id ASC

But I cannot create a view from the above query, I keep getting this error.

Error Code: 1351
View's SELECT contains a variable or parameter

How can I get around this, or is there a way I can rewrite my query without the variable and still achieve the same result?

accidentally delete mysql files in /var/lib/mysql

I made a big mistake!, I have a vps(centos7) server and for deleting temp files have a command:

 sudo find /tmp -type f -atime +10-delete

this command is good but this time by mistake i forgot to write tmp after / and you all know what happened next…!!

Gratefully i had a backup of all my files and almost restore everything.
But the problem is that my MySQL backup is for almost 30 days ago and they’re actually useless!
All MySQL files in /var/lib/mysql folder are deleted and therefor in phpmyadmin all databases are empty (because of all files deleted and folders remains databases exists but empty)

another great thing that first off all i noticed is that my Sites were running without any problems! then i found this post and realize what actually happens:
recover accidentally deleted MySQL files .
I do the instruction bellow

mysqldump --opt  > database.sql

but this command give me same empty databases!!
now what should i do to recover my databases from MySQL process that has the new ones?
Is there any way?

Thank you very much for guidance…

MySQL, would like to get both a field and a count inside GROUP_CONCAT

I can get a list of statuses that a tracking ticket has had, as well as the id of those statuses, as follows:

SELECT
t.id, t.name, GROUP_CONCAT( CONCAT(s.id, ':', s.name) ORDER BY s.id) AS 
all_statuses_history
FROM tracking t LEFT JOIN changelog c ON t.ID = c.tracking_id
LEFT JOIN statuses s ON c.changed_to = s.id

That will have duplicates (status can bounce around in the real world), so I change the GROUP_CONCAT with DISTINCT keyword:

GROUP_CONCAT(DISTINCT CONCAT(s.id, ':', s.name) ORDER BY s.id) AS .. (etc)

That’s better, but what I’d REALLY like is the id, status name, and count of instances, looking something like this:

1:Requested(1), 2:Pending(3), 3:On Hold(2), 4:Completed(1)

You’d read that as “the ticket bounced around between pending and on hold a bit and was finally completed”.

I can’t put COUNT(*) or apparently GROUP BY inside of a GROUP_CONCAT function. Is it possible to get all of this information inside of a GROUP_CONCAT?

Suitability of MySQL and SQLite?

I am about to build a C# wpf application. I need to easily port the application e.g. one click installation. I am not sure should I use SQLite or MySQL db? The range of data won’t run into billion at most it maybe go upto few millions? What is the best suggestion here? I will have both write and read functionality with also transaction controls for some operation.

Como configurar o MySQL para o PHP? [pendente]

Instalei o Apache e configurei ele para reconhecer o PHP, e funcionou normalmente, mas quero realizar uma conexão com o banco de dados através do PDO e ocorre o seguinte erro:

Connection failed: could not find driver

Já retirei os ; das .dll no arquivo php.ini, mas o erro persiste. Também tentei utilizar o mysqli e ocorre o seguinte erro:

Fatal error: Class 'mysqli' not found in C:Apache24htdocsconexao_db.php on line 7

O que devo fazer?
Estou utilizando Apache/2.4.23 (Win32) PHP/5.6.26. O MySQL se encontra instalado e funcionando perfeitamente.

Utilizei este código para realizar a conexão com PDO:

setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        echo "Connected successfully";
       }
    catch(PDOException $e)
    {
      echo "Connection failed: " . $e->getMessage();
    }
?> 

Observação:
Instalei o Apache, PHP e MySQL separados! O Apache e o PHP funcionam, o problema é com o MySQL! Sei que posso utilizar um pacote de instalação como o XAMPP, mas gostaria de entender os processos de configuração.

MySQL Workbench fails to store password in vault

I am trying to access my SQL server through MySQL Workbench. So I click the + sign to create a new connection.

At this point I choose a connection name and enter the hostname, username, and port. Then I click “Store in Vault” to store my password.

So I then enter my password to store.

Password entry

At this point I click “Test Connection”, but despite having just stored my password in the vault, I am yet again prompted again to enter my password.

I comply and enter my password once more. This time I get a connection failure message:

Connection Failure

I know that my username, password, hostname, and port are all correct.

I just wanted to know if the fact that MySQL seemingly ‘forgets’ that I stored my password in the vault is indicative of any particular errors on my part.

Como configurar o MySQL para o PHP?

Instalei o Apache e configurei ele para reconhecer o PHP, e funcionou normalmente, mas quero realizar uma conexão com o banco de dados através do PDO e ocorre o seguinte erro:

Connection failed: could not find driver

Já retirei os ; das .dll no arquivo php.ini, mas o erro persiste. Também tentei utilizar o mysqli e ocorre o seguinte erro:

Fatal error: Class 'mysqli' not found in C:Apache24htdocsconexao_db.php on line 7

O que devo fazer?
Estou utilizando Apache/2.4.23 (Win32) PHP/5.6.26. O MySQL se encontra instalado e funcionando perfeitamente.

Utilizei este código para realizar a conexão com PDO:

setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        echo "Connected successfully";
       }
    catch(PDOException $e)
    {
      echo "Connection failed: " . $e->getMessage();
    }
?> 

Observação:
Instalei o Apache, PHP e MySQL separados! O Apache e o PHP funcionam, o problema é com o MySQL! Sei que posso utilizar um pacote de instalação como o XAMPP, mas gostaria de entender os processos de configuração.

Optimizar codigo java y conexiones mysql

Estoy desarrollado una aplicación de escritorio en java y uso conexiones a Mysql, por el momento es de forma local, pero he notado que usa demasiado mi procesador, revisando los procesos abiertos de mysql, pude encontrar que deja muchos procesos abiertos, en estado “sleep”, he intentado hacer una secuencia para detenerlas, pero me cierra la conexión a la base de datos y por lógica ya no hace ninguna operación desde la aplicación.

Alguna idea para optimizar los procesos que realizo?

Uso una clase para conectar que es asi :

public class Conexion {

private static String servidor="jdbc:mysql://localhost:3306/skywater?zeroDateTimeBehavior=convertToNull";
private static String user="root";
private static String pass="pass";
private static String driver="com.mysql.jdbc.Driver";
private static Connection conexion;

public Conexion() {
    try {
        Class.forName(driver);
        conexion= DriverManager.getConnection(servidor,user,pass);

    }catch(ClassNotFoundException | SQLException e) {
        JOptionPane.showMessageDialog(null,"Error al establecer conexion con base de datos n Contacte Servicio: "+e.getMessage());
    }
}
public Connection getConnection() {
    return conexion;
}
public Connection getClosedConnection() throws SQLException {
    conexion.close();
    System.out.println("Conexion cerrada");
    return conexion;
}

Y otra clase para cada tipo de operación en la base de datos que contiene diferentes métodos por ejemplo un método de consulta:

public class OperacionesDB {
Conexion conector = new Conexion();

Connection con=conector.getConnection();
Statement st;

Y a mi parecer, el metodo que me esta generando muchos procesos en Mysql es el siguiente :

public DefaultTableModel consultaGeneral(String tabla,String columna, String valor)  {


   System.out.println(tabla);
   DefaultTableModel modelo=new DefaultTableModel();

   String seleccion="SELECT * FROM "+ tabla+" WHERE "+columna+" LIKE '%"+valor+"%';";
   try {

      Statement ejecutor = con.createStatement(); 
      ResultSet rs=ejecutor.executeQuery(seleccion);
      String nvo[]= new String[rs.getMetaData().getColumnCount()];
      for(int j=1;j<=rs.getMetaData().getColumnCount();j++){

          modelo.addColumn(rs.getMetaData().getColumnName(j));

      }

      while(rs.next())

      {

          for(int i=1;i<=modelo.getColumnCount();i++)

              nvo[i-1]=rs.getString(i);

                modelo.addRow(nvo);
           }

      ejecutor.close();
      //con.close();
      rs.close();

      return modelo;
   }


   catch(SQLException e) {
       System.out.println("Error en consulta general "+e.getMessage());
      return modelo; 
   }

}

esta consulta se activa al entrar a la aplicación y esta para muchas JInternalFrame, y se activa también con un JText cuando se preciosa una tecla para generar la búsqueda.