errori di incollamento | Progettazione di DataBase Relazionali

Topic: Pubblico - Composto da 10 Posts di 2 Utenti.

01 Aprile, 2010 13:41 #1
remigio
Utente

remigio
Registrato: Apr, 2010
Posts: 6
Offline

ciao, ho un piccolo database fatto con Access che ha, tra le altre cose, una query di aggiornamento che viene usata per settare a “null” in una maschera alcuni campi del record corrente. Ho trasportato le tabelle su un server mysql e le ho collegate ad access via odbc. Le tabelle e le maschere funzionano regolarmente ma quando uso la query di aggiornamento vien fuori un errore che dice “I record che Access non è stato in grado di incollare sono stati inseriti nella nuova tabella Errori di incollamento”. Ho controllato i tipi dati e le autorizzazioni dell’utente in uso ma sembra tutto ok. Da cosa può dipendere secondo voi? Grazie molte.

01 Aprile, 2010 14:08 #2
g2d
Moderatore

g2d
Registrato: Jul, 2008
Posts: 867
Offline
Segui g2d su Twitter!

Ciao user:”remigio”,

per prima cosa Benvenuto su MySQL Italia

1per query di aggiornamento intendi una UPDATE ? non ho ben capito a cosa serva.

se è una UPDATE forse sarebbe conveniente riscrivere la query direttamente su MySQL, non pensi ?

francamente mi spiazzi è troppo generica come situazione non so proprio cosa dirti.

Saluti user:”algweb”


Un tempo ero algweb ora sono g2d

01 Aprile, 2010 15:01 #3
remigio
Utente

remigio
Registrato: Apr, 2010
Posts: 6
Offline

Ciao, grazie del benvenuto, ho scoperto il sito solo oggi. la query l’ho trovata già fatta da un altro e sto cercando di capirne il meccanismo. In pratica vi è una maschera con alcuni campi (cognome, nome, data_nascita, n_richiesta, ecc) in cui vengono visualizzati i dati di un record. Sulla maschera vi è un pulsante “nuova richiesta” che va ad eseguire la query in questione. Facendo click sul pulsante, i campi vengono cancellati e n_richiesta aumenta di uno. In questo modo si possono inserire i dati della nuova richiesta direttamente in maschera. Tutti i campi della maschera fanno riferimento ad un’unica tabella “Richieste”. Come potrei fare per tracciare le operazioni di query e cercare di capire cosa succede? Grazie infinite.

01 Aprile, 2010 18:55 #4
g2d
Moderatore

g2d
Registrato: Jul, 2008
Posts: 867
Offline
Segui g2d su Twitter!

Ciao user:”remigio”,

Beh penso di poterti aiutare lato MySQL.

Attiva il log delle Query, nel file di configurazione my.cnf aggiungi le righe seguenti

[mysqld] //questa riga deve essere già presente nel file

log-update= qua metti il path del log log-long-format

Dopo di che riavvia MySQL riesegui la query e analizza il log che sarà presente nel path da te specificato con un nome tipo query00001 e vedi la query che è stata lanciata.

Per leggere il log devi usare il comando

mysqlbinlog logfile

dove logfile è il file da analizzare

Fammi sapere come va

Saluti user:”algweb”


Un tempo ero algweb ora sono g2d

01 Aprile, 2010 20:19 #5
remigio
Utente

remigio
Registrato: Apr, 2010
Posts: 6
Offline

dopo [mysqld] // inserisco log-update = /home/nomeutente/

riavvio il server ma il processo fallisce. Se cancello la riga riparte normalmente. Errrore o sf*ga? Grazie per l’aiuto prezioso.

01 Aprile, 2010 21:13 #6
g2d
Moderatore

g2d
Registrato: Jul, 2008
Posts: 867
Offline
Segui g2d su Twitter!

Ciao user:”remigio”,

MEA CULPA ho incollato male il suggerimento

log-update= percorso

log-long-format

la seconda riga è necessaria

Scusami ma nella fretta ho fatto un piccolo pasticcio

vedrai che ora si avvia il server

saluti user:”algweb”


Un tempo ero algweb ora sono g2d

02 Aprile, 2010 11:04 #7
remigio
Utente

remigio
Registrato: Apr, 2010
Posts: 6
Offline

Ci mancherebbe, solo che non funziona lo stesso. Sicuramente sono io che interpreto male. Ti mando il contenuto del mio my.cnf, per favore indicami come scrivere le tue indicazioni. Grazie davvero.

#
  1. The MySQL database server configuration file. #
  2. You can copy this to one of:
  3. - ”/etc/mysql/my.cnf” to set global options,
  4. - ”~/.my.cnf” to set user-specific options.
  5. One can use all long options that the program supports.
  6. Run program with—help to get a list of available options and with
  7. —print-defaults to see which it would actually understand and use. #
  8. For explanations see
  9. http://dev.mysql.com/doc/mysql/en/server-system-variables.html
  1. This will be passed to all mysql clients
  2. It has been reported that passwords should be enclosed with ticks/quotes
  3. escpecially if they contain ”#” chars…
  4. Remember to edit /etc/mysql/debian.cnf when changing the socket location. [client] port = 3306 socket = /var/run/mysqld/mysqld.sock
  1. Here is entries for some specific programs
  2. The following values assume you have at least 32M ram
  1. This was formally known as [safe_mysqld]. Both versions are currently parsed. [mysqld_safe] socket = /var/run/mysqld/mysqld.sock nice = 0
[mysqld] #
  1. * Basic Settings # user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp language = /usr/share/mysql/english skip-external-locking #
  2. Instead of skip-networking the default is now to listen only on
  3. localhost which is more compatible and is not less secure.
  4. bind-address = 127.0.0.1 #
  5. * Fine Tuning # key_buffer = 16M max_allowed_packet = 16M thread_stack = 128K thread_cache_size = 8
  6. This replaces the startup script and checks MyISAM tables if needed
  7. the first time they are touched myisam-recover = BACKUP #max_connections = 100 #table_cache = 64 #thread_concurrency = 10 #
  8. * Query Cache Configuration # query_cache_limit = 1M query_cache_size = 16M #
  9. * Logging and Replication #
  10. Both location gets rotated by the cronjob.
  11. Be aware that this log type is a performance killer. #log = /var/log/mysql/mysql.log #
  12. Error logging goes to syslog. This is a Debian improvement :) #
  13. Here you can see queries with especially long duration #log_slow_queries = /var/log/mysql/mysql-slow.log #long_query_time = 2 #log-queries-not-using-indexes #
  14. The following can be used as easy to replay backup logs or for replication.
  15. note: if you are setting up a replication slave, see README.Debian about
  16. other settings you may need to change. #server-id = 1 #log_bin = /var/log/mysql/mysql-bin.log expire_logs_days = 10 max_binlog_size = 100M #binlog_do_db = include_database_name #binlog_ignore_db = include_database_name #
  17. * BerkeleyDB #
  18. Using BerkeleyDB is now discouraged as its support will cease in 5.1.12. skip-bdb #
  19. * InnoDB #
  20. InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
  21. Read the manual for more InnoDB related options. There are many!
  22. You might want to disable InnoDB to shrink the mysqld process by circa 100MB. #skip-innodb #
  23. * Security Features #
  24. Read the manual, too, if you want chroot!
  25. chroot = /var/lib/mysql/ #
  26. For generating SSL certificates I recommend the OpenSSL GUI “tinyca”. #
  27. ssl-ca=/etc/mysql/cacert.pem
  28. ssl-cert=/etc/mysql/server-cert.pem
  29. ssl-key=/etc/mysql/server-key.pem

[mysqldump] quick quote-names max_allowed_packet = 16M

[mysql] #no-auto-rehash # faster start of mysql but no tab completition

[isamchk] key_buffer = 16M

#
  1. * NDB Cluster #
  2. See /usr/share/doc/mysql-server-/README.Debian for more information. #
  3. The following configuration is read by the NDB Data Nodes (ndbd processes)
  4. not from the NDB Management Nodes (ndb_mgmd processes). #
  5. [MYSQL_CLUSTER]
  6. ndb-connectstring=127.0.0.1
#
  1. IMPORTANT: Additional settings that can override those from this file!
  2. The files must end with ’.cnf’, otherwise they’ll be ignored. # !includedir /etc/mysql/conf.d/
03 Aprile, 2010 21:01 #8
g2d
Moderatore

g2d
Registrato: Jul, 2008
Posts: 867
Offline
Segui g2d su Twitter!

Ciao user:”remigio”,

incolla il tutto dopo questo pezzo

[mysqld] #

11. * Basic Settings # user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp language = /usr/share/mysql/english skip-external-locking #
22. Instead of skip-networking the default is now to listen only on
33. localhost which is more compatible and is not less secure.
44. bind-address = 127.0.0.1 #

Facci sapere com’è andata

Buona Pasqua

user:”algweb”

Ultima modifica 11 Luglio, 2010 01:16 di g2d


Un tempo ero algweb ora sono g2d

17 Aprile, 2010 13:34 #9
remigio
Utente

remigio
Registrato: Apr, 2010
Posts: 6
Offline

RISOLTO scrivo sperando di essere utile a qualcun’altro anche se la cosa non è pertinente con Mysql, dato che ho risolto un problema che mi stava bloccando il lavoro. il problema era solo di Access in quanto il codice VBA presente nel pulsante che andava ad eseguire la query di aggiornamento faceva un “copia – incolla” dei dati presenti in maschera. Siccome la maschera mostra il risultato di un’altra query (che unisce più tabbelle) in essa vi sono più campi di quanti ne ha la tabella di destinazione della query di update. In sostanza sii tentava di incollare più campi del dovuto, e Access dava un “errore di incollamento”. Tutto qua. Ho risolto usando una queary di accodamento (sempre su Access) che questa volta va a selezionare solo i campi che devono essere incollati, e tutto funziona allegramente, e siamo tutti più felici, io per primo.

18 Aprile, 2010 07:31 #10
g2d
Moderatore

g2d
Registrato: Jul, 2008
Posts: 867
Offline
Segui g2d su Twitter!

Ciao user:”remigio”,

Grazie questo è lo spirito con cui è nato questo sito. La condivisione della conoscenza e delle esperienze.

Grazie a nome di tutti noi

Ciao


Un tempo ero algweb ora sono g2d

Condividi su:

Loggati o Registrati per replicare